替代正则表达式,捕获

ben*_*uth 1 regex perl

也许这是一个愚蠢的问题但是:
我运行perl 5.8.8并且我需要替换任何前面带有数字的下划线,"0".

跑步:

 $var =~s /(\d)_/$10/g; 
Run Code Online (Sandbox Code Playgroud) 显然不起作用,因为10美元被解释为......好...... 10美元,而不是"1美元后跟0"

而且,作为运行perl5.8,我做不到

$var=~s/(?<n1>\d)\_/$+{n1}0/g;
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?
提前致谢

FMc*_*FMc 11

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

$var =~s /(\d)_/${1}0/g;
Run Code Online (Sandbox Code Playgroud)

或者您可以使用后视来防止数字成为匹配的一部分:

$var =~s /(?<=\d)_/0/g; 
Run Code Online (Sandbox Code Playgroud)