是否可以在正则表达式中替换捕获的组?

时间:2016-02-26 08:47:37

标签: regex perl substitution capturing-group

正则表达式是否有可能重复捕获的组一定次数,并且还会在捕获组中找到重复数量的限制?

示例:

Regex: /(a)([0-9])/g
String: ba1na3na2
Expected result: banaaanaa

我从来没有见过这样做的东西,但也许我一直在寻找错误的地方。注意:我使用的是Perl - 但我也有兴趣看到其他版本的答案。

1 个答案:

答案 0 :(得分:5)

在perl中,这个正则表达式会给你预期的结果,你的正则表达式是一个匹配,而s正则表达式是一个替换:

s/(a)([0-9])/$1 x $2/eg;

像这样:

my $str = 'ba1na3na2';
$str =~ s/(a)([0-9])/$1 x $2/eg;
print $str;
  

banaaanaa

  • e修饰符将右侧评估为表达式。
  • x运算符重复该字符串。

<强>更新

正如@AvinashRaj所说,s/(a)([0-9]+)/$1 x $2/eg;可能更合适。根据您的需要而定 ba20nana成为

  • baa0nana

  • baaaaaaaaaaaaaaaaaaaanana