2016-02-26 15 views
3

是否有可能用正則表達式重複捕獲的組的次數,並且在捕獲組中還可以找到要重複的數量的限制?是否有可能在正則表達式中的替換中重複捕獲的組?

例子:

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

我從來沒有見過任何這樣做,但也許我一直在找錯了地方。注意:我正在使用Perl - 但我很想看到其他版本的答案。

+1

你有沒有聽到上面'e'修改? –

+1

你想如何使用正則表達式來做到這一點 - 你將如何使用它?我想,'m /'只是返回匹配。在's /'中?這改變了字符串,是嗎? – zdim

+1

我喜歡示例數據! :) – simbabque

回答

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;更approriate。根據如果你想 ba20nana上成爲

  • baa0nana

  • baaaaaaaaaaaaaaaaaaaanana
+1

這's /(a)([0-9] +)/ $ 1 x $ 2/eg;'會更合適。 –

+0

是的。取決於OP的要求。 – bolav

+2

我正在保存這些令人討厭的正則表達式技巧,你們知道嗎?這可以嗎? :) – zdim

相關問題