使用正则表达式查找除一个字符串外的所有字符串

Find all strings except one string using regex

本问题已经有最佳答案,请猛点这里访问。

我想匹配所有字符串,除了字符串EDOCX1,0。例子:

1
2
3
4
5
6
"A"     --> Match
"F"     --> Match
"AABC"  --> Match
"ABCC"  --> Match
"CBA"   --> Match
"ABC"   --> No match

我试过使用[^ABC],但它忽略了"CBA"和其他。


1
^(?!ABC$).*

匹配除EDCOX1以外的所有字符串(0)。


从你的例子来看,我认为你的意思是"所有的字符串,除了那些包含abc这个词的字符串"。

试试这个:

1
^(?!.*\bABC\b)


用gnu grep反转匹配

您可以使用单词边界和要拒绝的特定字符串简单地反转匹配。例如:

1
2
3
4
5
6
$ egrep --invert-match '\bABC\b' /tmp/corpus
"A"     --> Match
"F"     --> Match
"AABC"  --> Match
"ABCC"  --> Match
"CBA"   --> Match

这在您提供的语料库上非常有效。对于其他(或更复杂的)用例,您的里程可能会有所不同。