python - python 中的双重前瞻断言

标签 python regex python-3.x

我知道前瞻断言根据条件匹配。但突然间,我对这种双重前瞻性断言感到震惊。

>>> a = compile(r'a(?=b)(?=c)')
>>> b = a.findall('abc')
>>> b
[]

然后匹配什么。提前致谢!

最佳答案

您正在匹配 aassert a 之后应该有一个 b。这个断言是成功的。

但在那之后,您断言 a 之后的内容应该是 c。该断言失败,因此不会有匹配项。

例如a(?=b)将成功并匹配 a

这个a(?=c)不会成功,因为a后面没有c。

要断言 a 后面有 bc,您可以使用 a(?=bc)或断言内的断言 a(?=b(?=c))@Keyur Potdar指出。

关于python - python 中的双重前瞻断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51121583/

相关文章:

django - 有可能在 Django 查询集中的两个日期之间得到几个月吗?

Python:读取网页并从该页面提取文本

python - 创建 python win32 服务

regex - 如何使用 perl regex 在字符串中转义美元符号 ($)

c# - 在此 Linq 查询中使用正则表达式?

python - 从文本文件中读取多个数字

python - import numpy 和 import math 有什么区别

python - 如何在 Python 中将浮点列转换为只有年份和月份的日期时间?

python - 获取与 Windows 中的任务管理器相同的进程详细信息

regex - sed 删除括号后的尾随空格