正则表达式是否可以用来匹配除特定字符串常量(如"ABC"
)之外的任何字符串?
有没有可能仅排除一个特定的字符串常量?
正则表达式是否可以用来匹配除特定字符串常量(如"ABC"
)之外的任何字符串?
有没有可能仅排除一个特定的字符串常量?
你需要使用负向前瞻断言。
(?!^ABC$)
你可以例如使用以下内容。(?!^ABC$)(^.*$)
如果这在你的编辑器中不起作用,请尝试以下方法。它已经在Ruby和JavaScript中测试过:
^((?!ABC).)*$
http://regexhero.net/tester/?id=65b32601-2326-4ece-912b-6dcefd883f31
你会注意到:
(ABC)|(.)
将获取第二组中除了ABC以外的所有内容。每个组都用括号括起来。因此,(ABC)是第1组,(.)是第2组。
因此,在替换中只需获取第2组:
$2
除非您的正则表达式引擎具有特殊支持,否则这并不容易。最简单的方法是使用负匹配选项,例如:
$var !~ /^foo$/
or die "too much foo";
$var =~ /^(($)|([^f].*)|(f[^o].*)|(fo[^o].*)|(foo.+))$/
or die "too much foo";
这段代码的意思是:"如果字符串首字母不是f
,那么后面的字符可以是任何字符;如果字符串首字母是f
,但第二个字母不是o
,那么后面的字符也可以是任何字符;否则,如果字符串以fo
开头,那么下一个字符不能是o
。"
f
,fo
和foo
。 - Gumbo尝试使用这个正则表达式:
^(.{0,2}|([^A]..|A[^B].|AB[^C])|.{4,})$
这段文字描述了三种情况:
A
A
但第二个字符不是 B
A
,第二个字符是 B
但第三个字符不是 C
^([^A]|A([^B]|B([^C]|$)|$)|$).*$