如何在模式中搜索标量变量并在匹配前后添加一些内容?

时间:2012-09-27 22:16:58

标签: regex perl

这是我的标量:

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/

提前致谢

1 个答案:

答案 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])/_/;

请注意,捕获会减慢匹配速度。