2013-11-26 156 views
2

我有一個字符串,其前綴後跟至少一個可能爲空的後綴列表。後綴本身以冒號爲前綴。前綴和後綴都不能包含任何冒號。在正則表達式替換中對列表進行迭代

實施例(1)對於一個空後綴:

x: 

實施例(2)兩個非空後綴( 「A」 和 「b」)和一個空的後綴:

x:a::b 

regular expression這種模式是:

([^:]+)(:([^:]*))* 

第一匹配捕獲個匹配前綴和(3 + 2N)捕獲スffixes(n = [0,1,2,...])。

在我的替換中,我想爲每個後綴加前綴。實施例(1)應產生:

x 

與實施例(2)應該產生:

xa 
x 
xb 

我如何必須指定替換表達式?

我的問題是,第一個替換吃了前綴。之後,第二個替換不再看到前綴。我必須保留剩餘替換的前綴。如何才能做到這一點?

+0

我不明白:「在我的替換中,我想爲每個後綴加前綴」 - 爲每個後綴加上前綴? – Richard

+0

@Richard它寫在第一句話:「我有一個字符串,前綴後跟...」。在這個例子中,x是前綴。 – ceving

+1

正則表達式有什麼特色?什麼語言或工具? – Toto

回答

1

我想我會先提取前綴,然後再進行替換。它會使代碼更易於閱讀,並且在這一點上它應該是一個簡單的替換。

+0

據我所見[Ant's tokenfilter](http://ant.apache.org/manual/Types/filterchain.html#tokenfilter)沒有內存來存儲第一個匹配的結果。 – ceving

+0

我同意Kieveli在這裏。捕獲前綴時,我看不到指定替換模式的方法。 – Richard