如果“a {m,n} =至少m但最多n a”,为什么代码返回true?
my $seq= "xxxx";
print "bingo!" if ($seq =~ /x{2,3}/);
由于我们的n = 3且字符串包含4 x?
我想我对/a{m,n}/
关于n的定义感到麻烦。毕竟,关键在于确保我们在字符串中有最大3 x ...或者?
谁能解释一下?
我要求的逻辑是,当它不起作用时必须指定最大出现次数。意思是我想匹配最大值3,字符串有4;我得到TRUE,我认为最大值是3.实际上它是4。
感谢。
答案 0 :(得分:1)
默认情况下,Perl正则表达不固定(对于每个正则表达式实现都不是这样)。这意味着如果输入字符串的任何子字符串在您的情况下具有2或3个x,则匹配成功。
my $seq= "xxxx";
print "bingo!" if ($seq =~ /^x{2,3}$/);
将无法匹配(它将匹配的唯一字符串是“xx”和“xxx”。
可替换地:
my $seq= "xxxx";
print "bingo!" if ($seq =~ /([^x]|^)x{2,3}([^x]|$)/);
也会无法匹配,但会匹配任何有2或3个连续x的字符串,但如果这些x是较长的x字符串的一部分则不会。