python - 查找所有*不*匹配正则表达式的单词/子字符串?
问题描述
所以我想找到所有不在正则表达式中的字符串部分。
假设我有一个正则表达式r'foo|bar'
和字符串'Hello foo how are you bar'
,我怎样才能得到除正则表达式匹配之外的每个单词以便返回['Hello', 'how', 'are', 'you']
?
解决方案
您可以使用列表理解并否定正则表达式匹配:
>>> st='Hello foo how are you bar'
>>> [w for w in st.split() if not re.search(r'foo|bar', w)]
['Hello', 'how', 'are', 'you']
您没有问,但您可能希望在您的正则表达式中使用锚点,以便如果您有foofoo
或barfoo
或fooblulator
在列表中,它会按预期处理。
如果你只是简单的单词查找,不需要正则表达式,同样的方法也有效:
>>> [w for w in st.split() if w not in {'foo', 'bar'}]
['Hello', 'how', 'are', 'you']
推荐阅读
- pandas - 基于多个索引重采样到等距时间
- json - 发送多个请求 webhook 团队
- android - Android:可绘制的环形多梯度
- javascript - 停止 babel 解析并生成重新格式化的输出代码
- kotlin - 如何根据 Kotlin 中 Seekbar 的百分比更改文本视图中的文本
- javascript - 函数参数中的方括号是什么意思?
- birt - BIRT - 如何在单个文本元素的不同位置插入不同的数据集行
- django - 如何在 Django 中更改语言的本地路径?
- python - Python 3.7 Windows 不支持 dbm.gnu 吗?
- matlab - 如何在 MATLAB 仿真运行时存储特定时间步长的变量值?