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

Is it possible to repeat a captured group in the substitution in regular expressions?

是否可以使用正则表达式将捕获的组重复一定次数,并附加限制,即要重复的次数也在捕获组中找到?

示例:

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

我从来没有见过这样做的东西,但也许我找错了地方。注意:我正在使用 Perl - 但我也有兴趣查看其他风格的答案。

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

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

像这样:

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

banaaanaa

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

更新:

正如@AvinashRaj 所说,s/(a)([0-9]+)/ x /eg; 可能更合适。看你要不要 ba20nana 成为

  • baa0nana

  • baaaaaaaaaaaaaaaaaaanana