正则表达式范围运算符

前端之家收集整理的这篇文章主要介绍了正则表达式范围运算符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个字符串’11 15′. W / a Regex然后比较该字符串中的值,在本例中为11和15(可以是任意数字的数字,但我会用2个2位数字保持简单).

对于这些数字中的每一个,我看看它是否与我想要的任何数字匹配;在这种情况下,我想看看数字是“12”,“13”还是“14”.如果是,那么我改变’$m’的值:

my $string = '11 15 ';
while ( $string =~ /([0-9]{1,})\s+/ig ) {
    my $m = $1;
    print $m . ".....";
    $m = 'change value' if $m =~ /[12...14]{2,}/g;
    print $m . "\n";
}

生产:

11.....change value
15.....15

“15”保持不变,应该如此.但’11’的变化.我究竟做错了什么?

解决方法

[12 … 14]与“1”,“2”,“.”和“4”匹配. “11”匹配; “15”没有.如果您只是匹配数字,则不应使用正则表达式.将您的行更改为以下内容

$m = 'change value' if $m ~~ [11..14];

或者,如果无法保证perl> = v5.10:

$m = 'change value' if grep { $m == $_ } 11..14;

猜你在找的正则表达式相关文章