Regex 正则表达式帮助:匹配一组单词,除非它们前面有特定的关键字

Regex 正则表达式帮助:匹配一组单词,除非它们前面有特定的关键字,regex,Regex,正在寻找一些正则表达式帮助。我需要匹配单词/短语,例如“机密”“绝密”“敏感”,除非它们前面有其他单词,例如同一行的“包含” “此电子邮件可能包含机密信息”-这不匹配 “请参阅随附的机密文件”-将匹配,因为链接上的关键字“机密”之前没有显示“包含” 我考虑过使用负回溯,但它受宽度限制,所以不起作用。在我的例子中,前面的单词可以出现在我试图匹配的关键字之前的几个单词。谢谢 你可能会认为是向后看,但实际上需要向前看: /^((?!contain).)*(confidential|top secret

正在寻找一些正则表达式帮助。我需要匹配单词/短语,例如“机密”“绝密”“敏感”,除非它们前面有其他单词,例如同一行的“包含”

“此电子邮件可能包含机密信息”-这不匹配

“请参阅随附的机密文件”-将匹配,因为链接上的关键字“机密”之前没有显示“包含”


我考虑过使用负回溯,但它受宽度限制,所以不起作用。在我的例子中,前面的单词可以出现在我试图匹配的关键字之前的几个单词。谢谢

你可能会认为是向后看,但实际上需要向前看:

/^((?!contain).)*(confidential|top secret|sensitive)/

因为lookbehind fixed wdth要求。

提供您正在使用的实际代码非常有用——例如,有几种RegEx方言,不清楚您正在使用哪种。这是一个好问题,为什么投票关闭?投票关闭是因为:没有给出RegEx方言,没有尝试过的有效示例。没有@Kuba。他通过自己的评论“展示了对问题的最低限度的理解”。显然比您更了解:)-除非有特定于实现的问题,否则不需要正则表达式方言。谢谢!我认为这几乎是我需要的方式,但它抓住了整个文本,我只想抓住关键字,除非它们前面有其他关键字。这实际上是针对RSA DLP的,RSA DLP是一个公司合规平台,我不确定他们使用的是什么regex实现。它都是gui驱动的。要将捕获组
()
转换为非捕获组
(?:)
,只需添加
?:
以便
/^(?:(!foo)。*(条)/