找到所有重复模式与正则表达式

时间:2015-04-14 13:35:04

标签: python regex

我是编程新手并尝试用正则表达式解决这个问题,在字符串中搜索单词' 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')]

1 个答案:

答案 0 :(得分:1)

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

试试这个。看看演示。

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

你的正则表达式的问题是,一旦引擎消耗了字符串就无法返回。你需要一个variable lookbehind这个在python中不存在。实际上你可以做的就是将所有内容都放在{{ 1}}这样就不会消耗掉字符串,你可以得到所有可能的组合。

lookahead