这是我的标量:
my $var = "foo1";
这就是我试图做的事情:
$var =~ s/[0-9]/_[0-9]/;
结果:
foo_[0-9]
预期结果:
foo_1
如果您能够回答查找foo
并在匹配后添加下划线,并找到1
并在之前添加下划线,那将会很棒。
$var = s/foo/something/
和
$var = s/[0-9]/something/
提前致谢
答案 0 :(得分:4)
捕获要插入的内容,然后插入捕获的内容:
s/([0-9])/_$1/;
或使用前瞻:
s/(?=[0-9])/_/;
根据要求,解决方案也符合foo
:
s/(foo)([0-9])/$1_$2/;
s/foo\K([0-9])/_$1/;
s/foo\K(?=[0-9])/_/;
请注意,捕获会减慢匹配速度。