python - 正则表达式在没有重复连续字符的句子中查找单词
问题描述
我正在寻找一种正则表达式模式来过滤掉句子中没有重复连续字符的单词。
我尝试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
在模式中定义时仅返回捕获组,因此您可以使用列表推导来提取第二个捕获组(其中是整个单词)。
推荐阅读
- c# - 如何迭代 Visio 几何行
- laravel - Laravel : orWhere 搜索查询
- laravel - Laravel hasmany 函数什么都不返回
- c# - UrlHelper 有时不返回基本 url
- laravel - 安装任何 npm 模块时出错
- ruby-on-rails - 以更具可读性/可维护性的方式重构 Rubocop Style/GuardClause
- javascript - 如果文本状态为 =,则动态更改文本
- javascript - 如何循环遍历对象数组,将键推送到另一个数组
- android - 如何根据当前日期从 sqlite 数据库更新 UI?
- node.js - 使用react和next.js时找不到fs模块的错误如何解决