我遇到了这个问题,我需要使用正则表达式来查找由另一个单词分隔的重复单词
因此,如果:
"all in all"
将返回:"all"
"good good good"
将返回:Null
(同一个单词而不是另一个单词)
我试过:
p = re.compile(r'(\b\w+\b)\s\w+\s\1')
m = p.findall('all in all day in and day out bit by bit good good good')
print(m)
它返回['all', 'bit', 'good']
,但我只希望它返回['all','bit']
提前谢谢
不需要正则表达式;普通编程结构可以很好地处理这类问题。编写循环并添加条件:
您只需为紧跟在初始捕获组之后的单词添加一个负前瞻,以确保您的正则表达式无法匹配(例如)
good good
:输出:
如果要包含重叠匹配,请将整个正则表达式设置为正向前瞻(谢谢@ggorlen):
输出:
如果还需要删除重复的匹配项,请转换为
set
并返回到list
:输出:
相关问题 更多 >
编程相关推荐