gpt4 book ai didi

python - 用正则表达式查找所有重复的模式

转载 作者:太空宇宙 更新时间:2023-11-03 17:47:08 25 4
gpt4 key购买 nike

我是编程新手,尝试用正则表达式解决这个问题,在字符串中搜索单词“can”,对于每次出现的情况,显示它前面和后面的两个单词,用字符串形成示例:

string = "CAN CAn Can cAN cAn caN can"
pattern = re.compile(r'(\S+\s+\S+)\s+can\s+(\S+\s+\S+)', re.I)
list = pattern.findall(string)
print list

预期结果:

[('CAN CAn', 'cAN cAn'), ('CAn Can', 'cAn caN'), ('Can cAN', 'caN can')]

实际结果:

[('CAN CAn', 'cAN cAn')]

最佳答案

(?=(\b\S+\s+\S+)\s+can\s+(\S+\s+\S+\b))

试试这个。查看演示。

https://regex101.com/r/sJ9gM7/104#python

你的正则表达式的问题是,一旦引擎消耗了字符串,它就无法返回。你将需要一个变量lookbehind,这在python中是不存在的。实际上你能做的就是把所有东西都放在在 lookahead 中,这样字符串就不会被消耗,并且您可以获得所有可能的组合。

import re
p = re.compile(r'(?=(\b\S+\s+\S+)\s+can\s+(\S+\s+\S+\b))', re.IGNORECASE)
test_str = "CAN CAn Can cAN cAn caN can"

re.findall(p, test_str)

关于python - 用正则表达式查找所有重复的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29628820/

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