我正在寻找一种正则表达式模式来过滤掉句子中没有重复连续字符的单词。
我已经尝试将 r'(?!.*(\w)\1{3,}).+' 作为正则表达式模式,但它不起作用。
例如,在“mike is amaaazing”这句话中,我希望正则表达式模式仅提取“mike”和“is”。
有什么想法吗?
请您参考如下方法:
您必须在开头使用单词边界并将点替换为 \w 以确保您的前瞻性不会超出测试的单词范围。
>>> s = 'mike is amaaazing'
>>> [m[1] for m in re.findall(r'\b(?!\w*?(\w)\1)(\w+)', s)]
['mike', 'is']
由于 re.findall 在模式中定义时仅返回捕获组,您可以使用列表理解来提取第二个捕获组(其中是整个单词)。
