正则表达式匹配不正确的字符串

时间:2013-06-16 04:49:07

标签: regex

如何编写与大写和小写字母的所有组合中的特定字符串匹配的正则表达式,除了一个?

例如,取字符串“ SuperMario ”。什么正则表达式匹配大写和小写字母的所有其他组合中的字符串?

正则表达式匹配

  • sUPERmARIO
  • Supermario

正则表达式不匹配

  • SuperMario
  • Supermari

Perl兼容正则表达式首选。

3 个答案:

答案 0 :(得分:9)

您可以使用:

/(?!SuperMario)(?i)supermario/

编辑:

请注意,如果您的字符串包含其他内容,您将获得更好的表演效果:

/(?i)supermario(?<!(?-i)SuperMario)/

答案 1 :(得分:3)

my $s = "Supermario";
if ($s =~ /supermario/i and $s !~ /SuperMario/) {
    print "wrong\n";
}

另一种方法:

/(?:[S](?!uperMario)|s)[Uu][Pp][eE][rR][mM][aA][Rr][iI][oO]/

答案 2 :(得分:0)

我的Perl生锈了,这不是正在使用正则表达式,但是如何:

my $term = "SuperMario";
my $input = "SuperMario";
if ( $input ne $term && uc($input) eq uc($term) ){
    print "match";
}