Regex 正则表达式-查找特定字符串,但不在特定句子中出现

Regex 正则表达式-查找特定字符串,但不在特定句子中出现,regex,Regex,我不确定使用一个正则表达式行是否可行。我想找到带有特定字符串的句子,但不是当它出现在特定的句子中时 这就像grep'word'文件| grep-iv“特殊句子” 例如: 输入: 你好,这里是世界美食 这里,那里 富与酒吧 现在和福一起去酒吧吧 结果应该是找到单词“foo”,但不是当句子是“bar with foo now”时: 输出: 你好,这里是世界美食 这里,那里 富与酒吧 使用单行正则表达式模式是否可以实现这一点?您可以执行以下操作: ^(?!bar with foo now).*?foo

我不确定使用一个正则表达式行是否可行。我想找到带有特定字符串的句子,但不是当它出现在特定的句子中时

这就像grep'word'文件| grep-iv“特殊句子”

例如: 输入:

你好,这里是世界美食

这里,那里

富与酒吧

现在和福一起去酒吧吧

结果应该是找到单词“foo”,但不是当句子是“bar with foo now”时: 输出:

你好,这里是世界美食

这里,那里

富与酒吧

使用单行正则表达式模式是否可以实现这一点?

您可以执行以下操作:

^(?!bar with foo now).*?foo.*$
上面写着“匹配一条不是“现在带着foo的酒吧”,但里面有“foo”的线”

但是,每行只能获得一个匹配项。如果你有:

你好,我的福是福


这将匹配,但整行只匹配一次(而不是两次,每个
foo
一次)。

感谢您的回复。它起作用了!现在我可以在这里多加一句话了。比如,如果我想排除两个句子,比如一个是“现在有食物的酒吧”和另一个是“这里有食物的酒吧”,我该怎么做?你应该做
(?!现在有食物的酒吧|这里有食物的酒吧)
,而不是
(?!现在有食物的酒吧)
。当我尝试现在有食物的时候,*?食物。*$它不起作用。所以它必须是一个完整的句子?我还有一系列的句子,这个正则表达式不起作用!嗯,
(?!)
中的正则表达式必须是一个完整的句子,因为我用
^
$
锚定了整个正则表达式。如果正则表达式不起作用,这可能是正则表达式,或者您是如何测试正则表达式的(无论您使用哪种语言)-您必须使用问题数组和用于测试正则表达式的关联代码更新原始问题。