尝试根据以下条件查找模式匹配:
我不明白为什么“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'
我的正则表达式表达式语法中缺少什么?
答案 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}'