冰镇可乐 发表于 2017-5-19 12:06:34

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]
查看完整版本: perl正则表达式中该注意的一个问题