鉴于:
ng serve
什么单一的正则表达式' ????'是$ 1的长度可以产生输出" foo_4__4__3_bar" ?
那就是" 9528"替换为" _4 _"," 5734"用" _4 _",剩下的" 776"用" _3 _"。
答案 0 :(得分:5)
您可以使用/e
modifier将Perl代码添加到替换部分中,然后进行规避。
my $str = "foo95285734776bar";
$str =~ s/([0-9]{2,4})/'_' . length($1) . '_'/ge;
print $str;
将输出
foo_4__4__3_bar
请注意,您现在需要一个完整的Perl表达式。这就是为什么你必须实际引用和连接下划线的原因。
来自perlop:
/e
将导致替换部分被视为完整的Perl表达式并在那时进行评估。但是,它在编译时检查语法。第二个e修饰符将导致替换部分在作为Perl表达式运行之前被撤消。