substation regex,带捕获

substation regex,带捕获,regex,perl,Regex,Perl,也许这是个愚蠢的问题,但是: 我运行perl 5.8.8,需要将任何带数字的下划线替换为0 运行: 显然不起作用,因为10美元被解释为。。。嗯$10,而不是后面跟0的1美元 此外,正如运行perl5.8一样,我不能这样做 $var=~s/(?<n1>\d)\_/$+{n1}0/g; 有什么想法吗? 提前感谢$var=~s/\d\u/${1}0/g $var=~s/\d\u/${1}0/g 就像在各种Unix shell中一样,可以将变量名括在大括号中以消除歧义 $var =~s /(\d)

也许这是个愚蠢的问题,但是: 我运行perl 5.8.8,需要将任何带数字的下划线替换为0

运行: 显然不起作用,因为10美元被解释为。。。嗯$10,而不是后面跟0的1美元

此外,正如运行perl5.8一样,我不能这样做

$var=~s/(?<n1>\d)\_/$+{n1}0/g;
有什么想法吗?
提前感谢

$var=~s/\d\u/${1}0/g

$var=~s/\d\u/${1}0/g

就像在各种Unix shell中一样,可以将变量名括在大括号中以消除歧义

$var =~s /(\d)_/${1}0/g;
或者,您可以使用“向后看”来防止数字成为匹配的一部分:

$var =~s /(?<=\d)_/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/

另一种可能性不确定是否适用于perl 5.8.8

s/\d\K_/0/
s/(?<=\d)_/0/

这也是在断言后面进行零宽度查找的好地方:

$var =~ s/(?<=\d)_/0/g;

它寻找一个数字,但实际上没有将数字转换成匹配的文本。

这也是在断言后面进行零宽度查找的好地方:

$var =~ s/(?<=\d)_/0/g;

它寻找一个数字,但实际上没有将数字转换成匹配的文本。

就是这样。非常感谢你,穆奇!就是这样。非常感谢你,穆奇!对不起,我说我需要替换下划线,这意味着我把数字放在它的前面。对不起,我说我需要替换下划线,这意味着我把数字放在它的前面