尝试根据以下条件查找模式匹配:
我不明白"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'我在regex表达式语法中遗漏了什么?
发布于 2013-11-11 20:39:54
\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}'https://stackoverflow.com/questions/19915466
复制相似问题