2014-01-10 24 views
0

我有這樣Java中的字符串:更換正則表達式出現的Java

REF([123],[456],[78]),REF([789],[456],[12]),{111},REF([8069],[8098],[56]) 

我需要刪除所有裁判中的所有第三發生位數。這意味着我需要刪除[78],[12]和[56]從字符串(從第二個逗號開始直到右括號前),使我得到這樣的輸出如下:

REF([123],[456]),REF([789],[456]),{111},REF([8069],[8098]) 

什麼都要我正則表達式是?

+0

在REF中是否會有四個數字,如果是這樣,那麼會發生什麼呢? –

+0

REF,Tim內部不能有第四個數字。 REF也可以作爲「ref」或「Ref」存在,不區分大小寫。 – Rg90

+0

好的,我編輯了我的正則表達式:) –

回答

3
String result = subject.replaceAll(
    "(?xi)(  # Match and capture in group 1:\n" + 
    "REF\\(  # REF(\n" + 
    "\\[\\d+\\], # a number in brackets, comma,\n" + 
    "\\[\\d+\\] # a number in brackets\n" + 
    ")   # End of capturing group\n" + 
    ",\\[\\d+\\] # Match a comma and a third number in brackets", "$1"); 
+1

喜歡評論模式,以前沒見過。 – Keppil

+0

這是一個精確而優雅的解決方案。精美的解釋也是如此。非常感謝Tim。 – Rg90