我有一个字符串’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;