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

Bra*_*roy 3 regex perl substitution capturing-group

是否可以使用正则表达式重复捕获的组一定次数,并且在捕获组中也可以找到重复的数量?

例:

Regex: /(a)([0-9])/g
String: ba1na3na2
Expected result: banaaanaa
Run Code Online (Sandbox Code Playgroud)

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

bol*_*lav 5

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

s/(a)([0-9])/$1 x $2/eg;
Run Code Online (Sandbox Code Playgroud)

像这样:

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

banaaanaa

  • 所述e改性剂评估右手侧的表达式.
  • x运营商repeates的字符串.

更新:

正如@AvinashRaj所说,这可能s/(a)([0-9]+)/$1 x $2/eg;更合适.取决于你是否想 ba20nana成为

  • baa0nana

要么

  • baaaaaaaaaaaaaaaaaaaanana

  • 我正在拯救这些令人讨厌的正则表达式技巧,你们意识到了吗?这可以吗?:) (2认同)