正则表达式,包含10个字符的字母数字字符串

时间:2018-02-20 14:12:15

标签: regex django

我需要为urls.py文件组成一个表达式

get-variable var可以是10个字符的字母数字字符串。

链接看起来像这样

loadDefinitionFilesFromMenu

3 个答案:

答案 0 :(得分:0)

事实证明,当你添加边缘情况时,它会变得稍微复杂一些,所以我会提供一个答案:

[&?]var=((?:%[\dA-Fa-f]{2}|[^&%]){10})(?:&|$)

请参阅demo

基本上,这将匹配" var"在参数过程中的任何一点,如果没有匹配" othervar =",它将确保将url编码的字符作为单个char抓取,并确保它不会抓取部分& #34;无功" (比如信息是11或20个字符长,这与该字符串不匹配,因为它检查后面的另一个参数,或字符串的结尾)。

故障:

  • [&?]var= - var=必须在&?
  • 之后发生
  • %[\dA-Fa-f]{2} - 在百分号后匹配十六进制代码(将url编码的字符作为单个字符)。
  • [^&%] - 任何不是百分比或&符号
  • (?:%[\dA-Fa-f]{2}|[^&%]){10} - 非捕获组,获取十六进制代码或不是百分比或十字符正好10次
  • ((?:%[\dA-Fa-f]{2}|[^&%]){10}) - 捕捉我在最后一点解释的内容
  • (?:&|$) - 以&符号或字符串或行的结尾
  • 结束

答案 1 :(得分:0)

您可以将var

的请求字符串值分组
>>> 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']

答案 2 :(得分:-1)

也许您可以在代码中尝试这个。

/(?<=var\=).{10,10}(?=$)/g