正则表达式在没有重复连续字符的句子中查找单词

我正在寻找一种正则表达式模式来过滤掉句子中没有重复连续字符的单词。

我尝试r'(?!.*(\w)\1{3,}).+'过正则表达式模式,但它不起作用。

例如,在句子“mike is amaaazing”中,我希望正则表达式模式只选择“mike”和“is”。

有任何想法吗?


狐的传说
浏览 117回答 2
2回答

慕姐4208626

您必须在开头使用单词边界并将点替换\w为以确保您的前瞻不会超出测试的单词。>>> s = 'mike is amaaazing'>>> [m[1] for m in re.findall(r'\b(?!\w*?(\w)\1)(\w+)', s)]['mike', 'is']由于re.findall在模式中定义时仅返回捕获组,因此您可以使用列表推导来提取第二个捕获组(其中是整个单词)。

慕桂英4014372

你可以试试这样的\b(?:(\w)(?!\1))+\b
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python