【发布时间】:2014-10-28 05:00:11
【问题描述】:
findall() 和 finditer() 的 Python 文档指出:
空匹配项包含在结果中,除非它们触及 另一场比赛的开始
这可以证明如下:
In [20]: [m.span() for m in re.finditer('.*', 'test')]
Out[20]: [(0, 4), (4, 4)]
谁能告诉我,为什么这个模式首先返回一个空匹配? .* 不应该消耗整个字符串并返回一个匹配项吗?此外,如果我将模式锚定到字符串的开头,为什么最后没有空匹配?例如
In [22]: [m.span() for m in re.finditer('^.*', 'test')]
Out[22]: [(0, 4)]
【问题讨论】:
-
起始锚定模式曾经怎么能匹配到最后的东西?