2024-06-16 09:53:29 发布
网友
快速提问。。。 我需要一个正则表达式来匹配代码中的特定字母,除非它包含在特定的模式中
我想要一个匹配N的东西,后面跟或前面跟任何东西,只要它前面不是直接跟C(=O)
示例:
C(=O)N
不应匹配
C(=O)CN
应该匹配
但它不需要锚,因为:
C(=O)NCCCN
因为结尾的N应该匹配
到目前为止,我有:
(?!C\(=O\)N$)[N]
任何帮助都将不胜感激
相反,要用消极的眼光看后面:
(?<!C\(=O\))N
See this regex101 example
敬礼
您可以使用“负面观察”:
参见regex demo
N只有在前面没有紧跟文字C(=O)序列时才会匹配
N
C(=O)
(?<!...)被称为负前瞻。它不使用字符(不移动regex索引),只检查当前位置之前的字符串中是否缺少某些内容。如果文本匹配,则匹配失败(没有匹配)。详见Lookarounds
(?<!...)
In Python:r'(?<!C\(=O\))N':
r'(?<!C\(=O\))N'
import re p = re.compile(r'(?<!C\(=O\))N') strs = ["C(=O)N", "C(=O)CN", "C(=O)NCCCN"] print([x for x in strs if p.search(x)])
相反,要用消极的眼光看后面:
See this regex101 example
敬礼
您可以使用“负面观察”:
参见regex demo
N
只有在前面没有紧跟文字C(=O)
序列时才会匹配(?<!...)
被称为负前瞻。它不使用字符(不移动regex索引),只检查当前位置之前的字符串中是否缺少某些内容。如果文本匹配,则匹配失败(没有匹配)。详见LookaroundsIn Python:
r'(?<!C\(=O\))N'
:相关问题 更多 >
编程相关推荐