gpt4 book ai didi

python - Lookahead 正则表达式无法找到相同的重叠匹配项

转载 作者:行者123 更新时间:2023-11-30 21:50:42 24 4
gpt4 key购买 nike

再次搜索相同模式时是否可以使用正则表达式找到重叠匹配项?我希望能够找到出现三次的匹配项。例如,bababababababab 中出现了 3 次:

巴巴布巴巴布

babababab

爸爸爸爸

这是我当前的 Python 实现:

import re
matches = re.findall(r'(?=(\w+).*\1).*\1', "babababab")
print(matches)

我的程序只找到baba而不是babab。谢谢!

最佳答案

这里您可以使用的一个技巧是实际上只匹配 ba(?=bab),这只会消耗 ba,从而允许正则表达式引擎逻辑上向前移动仅通过一场比赛:

matches = re.findall(r'ba(?=bab)', "babababab")
matches = [i + 'bab' for i in matches]
print(matches)

打印:

['babab', 'babab', 'babab']

请注意,我将尾部 bab 连接到每个匹配,这很好,因为我们知道实际的逻辑匹配是 babab

关于python - Lookahead 正则表达式无法找到相同的重叠匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60293891/

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