是否可以在正则表达式的替换中重复捕获的组?
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
是否可以使用正则表达式将捕获的组重复一定次数,并附加限制,即要重复的次数也在捕获组中找到?
示例:
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