在perl的正则表达式中有几个非常重要的变量值得注意
1、$_
如果不另外指定,则表示目标串
2、$` :
目标串中当前匹配串之前的字符串
3、$& :
目标串中当前的匹配串
4、$' :
目标串中当前匹配串之后的字符串
5、$1($2,$3,...$n)
正则分组字符串,以1开始
6. $-[n],$+[n]
组匹配的开始与结束位置,n表示第几组,从0开始。0表示整个匹配
7. $+
与搜索模式相匹配的最后一个模式
以下为例子
$_ = 'ABcde123D'; if (/([a-z]+)(\d+)/) { print "\$1:$1,\$2:$2,\$`:$`,\$&:$&,\$':$'\n"; print "entie match $&:start position,$-[0]; end position,$+[0]\n"; print "first group $1:start position,$-[1]; end position,$+[1]\n"; print "second group $2:start position,$-[2]; end position,$+[2]\n"; } else{ print 'not find'; }
输出:
$1:cde,$2:123,$`:AB,$&:cde123,$':D first group cde123:start position,2; end position,8 first group cde:start position,2; end position,5 second group 123:start position,5; end position,8