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)]
解决方法
>.*为零或更多,所以一旦消耗了四个字符,最后的零长度空字符串(不接触任何匹配的开始)仍然存在;和 >末尾的空字符串与模式不匹配 – 它不会在字符串的开头处开始.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。