Regex 10个字符的字母数字字符串的正则表达式
我需要为url.py文件编写一个表达式 get变量var可以是10个字符的字母数字字符串 链接看起来像这样Regex 10个字符的字母数字字符串的正则表达式,regex,django,Regex,Django,我需要为url.py文件编写一个表达式 get变量var可以是10个字符的字母数字字符串 链接看起来像这样 http://127.0.0.1:8000/?var=fea40u7b94 也许你可以在你的代码里试试这个 /结果是,当您添加边缘案例时,它会变得稍微复杂一些,因此我将对此提供一个答案: [&?]var=((?:%[\dA-Fa-f]{2}|[^&%]){10})(?:&|$) 见 基本上,这将在参数过程中的任何一点匹配var,而不匹配othervar=,它将确
http://127.0.0.1:8000/?var=fea40u7b94
也许你可以在你的代码里试试这个
/结果是,当您添加边缘案例时,它会变得稍微复杂一些,因此我将对此提供一个答案:
[&?]var=((?:%[\dA-Fa-f]{2}|[^&%]){10})(?:&|$)
见
基本上,这将在参数过程中的任何一点匹配var,而不匹配othervar=,它将确保获取url编码字符作为单个字符,并确保不会获取部分var。如果信息长度为11或20个字符,则这将与该字符串不匹配,当它检查后面的另一个参数或字符串的结尾时
细分:
[&?]var=-var=必须在&或a之后出现?
%[\dA-Fa-f]{2}-在百分号后匹配一个十六进制代码,以将url编码的字符作为单个字符。
[^&%]-任何不是百分号或符号的符号
?:%[\dA-Fa-f]{2}|[^&%]{10}-非捕获组,获取十六进制码或百分号或安培数,精确10次
?:%[\dA-Fa-f]{2}|[^&%]{10}-捕获我在最后一点中解释的内容
?:&|$-以符号结尾或字符串或行的结尾
您可以将var的请求字符串值分组
你试过什么正则表达式?你还没有让我们自己回答这个问题。我建议你自己回答这个问题。看看量词和字符组Sedge的情况:如果URL编码的字符包含在其中,会发生什么?假设有一个urlhttp://127.0.0.1:8000/?var=%66%65%61%74%32%38%33%38%39%31 -这意味着http://127.0.0.1:8000/?var=feat283891,但正则表达式如何处理?你想让它来处理吗?更多的例子会更好。当向url提供2个变量时,工作流应该是什么?http://127.0.0.1:8000/?var=feat283891&othervar=fea40u7b94I 试试urlr'^?P\w+{10}$',我只需要一个变量这将绝对匹配任何等于后的任何内容。如果不是已经提供的var呢?他们还要求将字符限制为10个,始终正好是10个字符,这将接受任意数量的字符。问题中没有提到其他边缘情况,例如othervar,这将与之匹配,如果url中还包含其他参数,该怎么办?那么url编码的字符呢?即使它们根本不必是,它们也有可能是什么呢http://127.0.0.1:8000/?othervar=fea40u7b94&xyz=ewewv7832h? 当它不应该的时候,这会很好地匹配它。基尔塔纳,谢谢,我会试试的。但我不明白为什么我的问题会被提出?我不太懂英语。我问错了什么?嗨,尼克,这里是stackoverflow,我们基本上都是自己解决问题,然后在这里问我们什么时候卡住了。在您的问题中,您没有共享您尝试过的代码。
>>> import re
>>> s
'http://127.0.0.1:8000/?var=fea40u7b94&xyz=ewewv7832h'
>>> re.findall('=(\w{10})',s)
['fea40u7b94', 'ewewv7832h']
>>> re.findall('var=(\w{10})',s)
['fea40u7b94']