正则表达式不应该工作

时间:2016-09-05 10:46:59

标签: python regex

我开始学习正则表达式,我试图制作一个简单的正则表达式,匹配没有意义,但它匹配任何方式 我试过python

import re


pattern = r'[a-z]+[a-z]'



print re.findall(pattern,"adasdasad");

它返回['adasdasad'] 它不应该工作,因为[a-z] +应该已经消耗了整个字符串,其余的([a-z])将找不到任何事情,为什么它评估????

1 个答案:

答案 0 :(得分:5)

+不是占有量词,允许回溯到量化的子模式。

[a-z]+匹配adasdasa[a-z]匹配d,请参阅this demo

enter image description here

顺便说一句,如果你将[a-z]++[a-z]用于PCRE(具有占有量词++的模式),它将永远不会匹配任何东西,因为它需要匹配一个或多个字母,然后另一个字母已经消耗了第一个子模式。因此,这与(?!)模式相同。