正则表达式查找5位数代码

时间:2013-11-11 20:38:28

标签: python regex python-2.7

尝试根据以下条件查找模式匹配:

  • 字符串长度为5个字符
  • Char [0] = Letter / Number
  • Char [1] = Letter
  • Char [2-4] = Number

我不明白为什么“22222”适用于这个表达式?

 p = r'(\w|\d)(\w)(\d){3,}'
 m = re.match(p, "AA012")    # Works as expected
 --> 'AA012'

 m = re.match(p, "1A222")    # Works as expected
 --> '1A222'

 m = re.match(p, "22222")    # Does NOT work as expected!
 --> '22222'

我的正则表达式表达式语法中缺少什么?

1 个答案:

答案 0 :(得分:2)

\w匹配字母数字(以及下划线)。

如果您只想匹配 字母,请使用[a-zA-Z]

r'\w[a-zA-Z]\d{3,}'

匹配字母或数字(或下划线),然后是一个字母,然后是3位数。

演示:

>>> import re
>>> p = r'\w[a-zA-Z]\d{3,}'
>>> re.match(p, "22222")
>>> re.match(p, "AA012")
<_sre.SRE_Match object at 0x105aca718>
>>> re.match(p, "1A222")
<_sre.SRE_Match object at 0x105aca780>
>>> re.match(p, "_A222")
<_sre.SRE_Match object at 0x105aca718>

如果下划线有问题,请使用:

r'[a-zA-Z\d][a-zA-Z]\d{3}'