以下正则表达式
moo = re.compile(r'^\d+$')
将搜索一个以数字字符开头和结尾的字符串。示例可以是11234
,44332
,123321321
等。
但正则表达式与12321xyz12312
不匹配。这个字符串也以数字开头和结尾,这就是我的正则表达式需要匹配一个字符串!那为什么我的正则表达式也不匹配这个字符串呢?
答案 0 :(得分:4)
我认为你误解了开始和结束匹配器是如何工作的。
^\d+$
不会简单地匹配以数字结尾并以数字开头的字符串。它说的是:
^
)\d
)+
)$
) 12321xyz12312
不匹配,因为它匹配12321
后,会尝试匹配字符串的结尾。但它还没有结束,所以字符串不匹配!
这是一个正如你想要的正则表达式:
^\d(.*\d)?$
该表达式将匹配以下内容:
YES 0
NO x0
NO 0x
YES 00
YES 000
YES 0x0
YES 00x00
YES 000xxx000
答案 1 :(得分:1)
"^\d+$"
表示“开始"\d+"
和结束"^"
之间的一个或多个小数位"$"
。” xyz
不是十进制数字。
答案 2 :(得分:1)
我认为你误解了正则表达式。它匹配"字符串的开头" ([0-9]
)紧接着"一个或多个0-9个字符" (0|1|2|3|4|5|6|7|8|9
- +
与$
或^ ... $
相同,...
表示"重复一次或多次")紧随其后by"字符串结束" ({{1}})。
也就是说,{{1}}表示"只匹配{{1}}所属的字符串" (而不是"匹配包含它的字符串")。