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

Regex 使用正则表达式查找除一个字符串以外的所有字符串,regex,Regex,我想匹配除字符串“ABC”之外的所有字符串。 例如: "A" --> Match "F" --> Match "AABC" --> Match "ABCC" --> Match "CBA" --> Match "ABC" --> No match 我尝试了[^ABC],但它忽略了“CBA”(以及其他) 匹配除ABC以外的所有字符串根据您的示例判断,我认为您的意思是“除包含ABC一词的字符串外的所有字符串” 试试这个:

我想匹配除字符串“ABC”之外的所有字符串。 例如:

 "A"     --> Match
 "F"     --> Match
 "AABC"  --> Match
 "ABCC"  --> Match
 "CBA"   --> Match
 "ABC"   --> No match
我尝试了
[^ABC]
,但它忽略了
“CBA”
(以及其他)


匹配除ABC以外的所有字符串

根据您的示例判断,我认为您的意思是“除包含ABC一词的字符串外的所有字符串”

试试这个:

^(?!.*\bABC\b)
使用GNU Grep反转匹配 您可以使用单词边界和要拒绝的特定字符串简单地反转匹配。例如:

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

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

我相信在@wombat上已经详细讨论过这一点。另一个问题是关于拒绝包含某个子字符串的字符串。这是一个字符串的特例,它完全由
ABC
组成
AABC
ABCC
都可以。我想他想要所有的“A”“B”“C”组合,对吗?(即,在任何3个长度的字符串中)@d'alar'cop
CBA
应该根据示例进行匹配,但是他的[^ABC]不应该工作吗?如果没有,原因是什么?@d'alar'cop
[^ABC]
将拒绝
CBA
我也尝试了负片,但没有成功,因为我没有在里面使用结束位置。谢谢蒂姆@波希米亚人:不,我的意思是“除了这个特定的字符串'ABC'”之外的所有字符串”你的演示工作得很好,但是我的例子中没有类似“反转匹配”的东西。谢谢
$ egrep --invert-match '\bABC\b' /tmp/corpus 
"A"     --> Match
"F"     --> Match
"AABC"  --> Match
"ABCC"  --> Match
"CBA"   --> Match