2012-11-27 34 views
1

基本上我想捕獲多個子組。 我不是Repeating a Capturing Group nor Capturing a Repeated Group捕獲重複組的多個子組

如果AAA我想獲得下列子組:
$ 1:一個
$ 2:一個
$ 3:

這可以通過實現(a)(a)(a)

我現在試圖讓這個沿東西線(一){3}不幸的結果只能
$ 1:一個

編輯: 我試圖做到這一點在Java中。我已經有了另一個解決方案,它使用StringBuilder通過重複捕獲組來預期發生的次數來生成正確的模式。
這個問題更多的是好奇心,因爲我正在尋找一個更簡單的方法來做到這一點。

Some1.Kill.The.DJ提到的是我在Java中試圖做的。

+5

當然你是「重複一個捕獲組」。你正在使用哪種正則表達式引擎?這對於這個問題至關重要。只有.NET才能捕獲任意數量的子字符串。它通過重複一個捕獲組來完成。我很確定沒有其他可能的情況。然而......你的實際使用情況是什麼?也許你並不需要使用捕獲組來實現你想要的。 –

+1

哪個引擎/編程語言?你想要實現的更多例子? – poplitea

+0

我已經回答了一個類似的問題[這裏](http://stackoverflow.com/questions/13580848/regex-repetition-group)和相同的例子..也正如buettner說只有** .net **有它 – Anirudha

回答

0

實際的用例和正則表達式引擎對於真正回答這個問題是必要的,但是對於您提供的示例,可以使用表達式(a)的全局模式匹配來完成。在蟒蛇會做這樣的...

>>> import re 
>>> test = "aaa" 
>>> re.findall(r'(a)', test) 
['a', 'a', 'a'] 

在Perl它會添加/ g的改性劑,等全球模式匹配將嘗試多次匹配表達式儘可能的範圍內給予串。