40

我想匹配除 string 之外的所有字符串"ABC"。例子:

 "A"     --> Match
 "F"     --> Match
 "AABC"  --> Match
 "ABCC"  --> Match
 "CBA"   --> Match
 "ABC"   --> No match

我试过了[^ABC],但它忽略了"CBA"(和其他人)。

4

3 回答 3

57
^(?!ABC$).*

匹配除 . 之外的所有字符串ABC

于 2013-04-06T15:56:18.717 回答
3

从你的例子来看,我认为你的意思是“所有字符串,除了那些包含单词ABC 的字符串”。

试试这个:

^(?!.*\bABC\b)
于 2013-04-06T16:36:57.790 回答
1

使用 GNU Grep 反转匹配

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

$ egrep --invert-match '\bABC\b' /tmp/corpus 
"A"     --> Match
"F"     --> Match
"AABC"  --> Match
"ABCC"  --> Match
"CBA"   --> Match

这在您提供的语料库上非常有效。您的里程可能会因其他(或更复杂的)用例而异。

于 2013-04-06T16:54:22.227 回答