从re模块的Python文档:
{M,N}?
使得到的RE匹配前一个RE的m到n次重复,尝试匹配尽可能少的重复.这是前一个限定符的非贪婪版本.例如,在6个字符的字符串'aaaaaa'上,{3,5}将匹配5'a'字符,而{3,5}?只会匹配3个字符.
我对这是如何工作感到困惑.这有什么不同{m}?我不知道怎么会出现模式比m重复更匹配的情况.如果m+1连续重复,那么也有m.我错过了什么?
然而,确实只包含一个正则表达式a{3,5}?和一个带有模式 的正则表达式a{3}将匹配相同的东西(即re.match(r'a{3,5}?', 'aaaaa').group(0)并且re.match(r'a{3}', 'aaaaa').group(0)
都将返回'aaa'),当您查看包含这两个元素的模式时,模式之间的差异变得清晰.说你的模式a{3,5}?b,然后aaab,aaaab和aaaaab将被匹配.如果您刚刚使用,a{3}b那么只会aaab匹配. aaaab并且aaaaab不会.
请看Shashank的答案,例如将这种差异更多地消除,或者测试一下你自己.我发现这个站点是一个很好的资源,用于测试python正则表达式.
| 归档时间: |
|
| 查看次数: |
1360 次 |
| 最近记录: |