2017-04-11 69 views
-2

我想寫一個RegEx,它將捕獲由字符串「csv,csv,csv,csv」中的逗號分隔的'csv'實例並替換爲「xml 」。爪哇:RegEx多個匹配在相同的'片段'

所以我的輸出將是「csv,xml,xml,csv」。

我遇到的問題是,我的RegEx只捕獲csv的第一個實例,並且由於第一個匹配結束時的'逗號'也是第二個匹配的第一個分隔符,它不會'不被捕獲。

RegEx =「,csv,」(非常簡單的例子)。

實施例2:

正則表達式= 「(,狗,)」

輸入 「狗,狗,狗,狗」

輸出 「狗,貓,貓,狗」

編輯:我找到了我正在尋找的東西,使用向前看和向後看。 RegEx =「(?< =,)狗(?=,)」會做的伎倆。

+1

處理CSV的規則#1不是試圖使用正則表達式。 CSV語法不規則。使用OpenCSV等現有的CSV庫。許多工作已經進入編寫和調試階段,並且您無法在沒有大量工作的情況下自行復制它。 –

+0

我不關心實際的內容,比如'csv',但是一個比賽的最後一個分隔符也是下一個比賽的第一個分隔符的情況。當尋找RegEx =「(,狗)」時,一個更好的例子可以是「狗,狗,狗,狗」替換爲「狗,貓,貓,狗」 –

+0

請不要編輯你的*問題* - 發佈答案。 – dimo414

回答

0

使用一下變通,其斷言,但不消耗更換

(?<=,)xml(?=,) 

String replaced = str.replaceAll("(?<=,)csv(?=,)", "xml");