我开始学习正则表达式,我试图制作一个简单的正则表达式,匹配没有意义,但它匹配任何方式 我试过python
import re
pattern = r'[a-z]+[a-z]'
print re.findall(pattern,"adasdasad");
它返回['adasdasad'] 它不应该工作,因为[a-z] +应该已经消耗了整个字符串,其余的([a-z])将找不到任何事情,为什么它评估????
答案 0 :(得分:5)
+
不是占有量词,允许回溯到量化的子模式。
[a-z]+
匹配adasdasa
和[a-z]
匹配d
,请参阅this demo。
顺便说一句,如果你将[a-z]++[a-z]
用于PCRE(具有占有量词++
的模式),它将永远不会匹配任何东西,因为它需要匹配一个或多个字母,然后另一个字母已经消耗了第一个子模式。因此,这与(?!)
模式相同。