python - 如何编写两个断言都必须为真的python正则表达式否定环视?
问题描述
所以我试图匹配某个缩写的所有出现XYZ
,但前提是它们两边都没有用括号括起来。字符串XYZ filler text
、(XYZ filler text)
和(Filler text XYZ)
都应该匹配,而字符串(XYZ)
不应该匹配。
我能得到的最接近的是
(?<!\()XYZ(?!\))
当然,这样做的问题是,如果任何一个否定断言都匹配,那么整个事情就不再匹配了。我该怎么办?谢谢!
解决方案
您可以或 ( |
) 正则表达式:
(?<!\()XYZ|XYZ(?!\))
示例:
import re
lst = ['XYZ filler text', '(XYZ filler text)', '(Filler text XYZ)', '(XYZ)']
for x in lst:
print(re.search(r'(?<!\()XYZ|XYZ(?!\))', x))
输出:
<re.Match object; span=(0, 3), match='XYZ'>
<re.Match object; span=(1, 4), match='XYZ'>
<re.Match object; span=(13, 16), match='XYZ'>
None
推荐阅读
- python - Keras:如何乘法()?
- r - 在R中合并具有起始模式的文件
- django - 如果我更改 django 应用程序名称会出现什么问题?
- spring-mvc - Spring Integration 测试不使用安全配置
- sql - 为什么我的选择 Distinct 在我的 sql 中不起作用
- gitlab - 为主机以外的 Gitlab CI-CD 设置不同的结帐 repo 位置
- c++ - 使用 Murmur2 64 位哈希函数生成会导致冲突的输入
- sapui5 - 在列表报告上重新定位自定义过滤器
- kubernetes - 如何在命名空间中存在的所有部署的 yaml 文件中进行相同的更改
- java - 'com.google.firebase.database.DatabaseException: Serializing Arrays is not supported, please use Lists' 是什么意思?