perl正则表达式中该注意的一个问题
请看以下例子代码1
$a='abc123EEE11';
while($a=~/\d+/g){
print $&,"\n";
}
将输出
123
11
代码2
$a='abc123EEE11';
while($a=~/\d+/){
print $&,"\n";
}
将无限输出123,该程序将无限循环
代码3
$a='abc123EEE11';
@result=$a=~/\d+/g;
result数组中包含2个数,123和11
ps:
如果你想在匹配表达式过程中添加控制
则使用以下方式
$a='abc123EEE11';
while($a=~/\d+/g){
print $&,"\n";
}
如果想直接返回所有匹配结果则使用
$a='abc123EEE11';
@result=$a=~/\d+/g;
如果只想匹配一个结果,则把g参数省略掉
另外如果使用的是替换模式
如
$a='abc123EEE11k11';
@result=$a=~s/\d+/P/g
则result只有一个元素,其值为匹配的数目,当没有匹配时,是存储的是一个空置,似乎是空字符串吧
页:
[1]