gpt4 book ai didi

python - 为什么 Python findall() 和 finditer() 在 unanchored .* 搜索中返回空匹配项?

转载 作者:太空狗 更新时间:2023-10-29 21:34:22 27 4
gpt4 key购买 nike

findall()finditer() 的 Python 文档指出:

Empty matches are included in the result unless they touch the beginning of another match

这可以证明如下:

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)]

最佳答案

  1. .*零个或多个,所以一旦四个字符被消耗,末尾的零长度空字符串(不触及任何比赛)仍然存在;和
  2. 末尾的空字符串与模式不匹配 - 它不是从字符串的开头开始。

关于python - 为什么 Python findall() 和 finditer() 在 unanchored .* 搜索中返回空匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25648628/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com