2

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

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

正则表达式应该匹配

  • 超级玛丽
  • 超级玛丽

正则表达式不应匹配

  • 超级马里奥
  • 超级玛丽

首选 Perl 兼容的正则表达式。

4

3 回答 3

9

你可以使用这个:

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

编辑:

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

/(?i)supermario(?<!(?-i)SuperMario)/
于 2013-06-16T05:03:53.793 回答
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]/
于 2013-06-16T04:53:46.007 回答
0

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

my $term = "SuperMario";
my $input = "SuperMario";
if ( $input ne $term && uc($input) eq uc($term) ){
    print "match";
}
于 2013-06-16T04:57:08.820 回答