也许这是一个愚蠢的问题,但:
我运行perl 5.8.8,我需要用“0”替换前面有数字的任何下划线。替换正则表达式,与捕获
运行:
$var =~s /(\d)_/$10/g;
显然不为$ 10个工作被解释为......好$ 10不“$ 1后跟0”
而且,作为乳宁perl5.8,我不能这样做
$var=~s/(?<n1>\d)\_/$+{n1}0/g;
有什么想法吗?
由于事先
也许这是一个愚蠢的问题,但:
我运行perl 5.8.8,我需要用“0”替换前面有数字的任何下划线。替换正则表达式,与捕获
运行:
$var =~s /(\d)_/$10/g;
显然不为$ 10个工作被解释为......好$ 10不“$ 1后跟0”
而且,作为乳宁perl5.8,我不能这样做
$var=~s/(?<n1>\d)\_/$+{n1}0/g;
有什么想法吗?
由于事先
就像在各种Unix shell中,可以在括号中为消除歧义围住变量名。
$var =~s /(\d)_/${1}0/g;
或者你可以使用一个向后看,以防止位被比赛的一部分:
$var =~s /(?<=\d)_/0/g;
另一种可能性是(不知道是否适用于perl的5.8.8)
s/\d\K_/0/
s/(?<=\d)_/0/
这也将是一个零宽度向后看断言的好去处:
$var =~ s/(?<=\d)_/0/g;
它寻找一个数字,但实际上并没有将数字sl到匹配的文本中。
这也适用。谢谢。 – benzebuth 2010-08-25 13:34:18
这就是它。非常感谢 ! – benzebuth 2010-08-25 13:29:36