2012-07-05 64 views
0

是否可以在1次迭代中搜索不同的模式並替換匹配項?使用正則表達式在1次迭代中替換所有匹配

舉例來說,如果我有串

"Hey {Apple}, where is {Carrots|Peas|Cucumber}?" 

是否有可能在1次迭代取代一切花括號內,這樣它看起來像:

"Hey fruit, where is vegetables? 

我之所以問的是因爲我當前的實現首先搜索所有在花括號(1迭代)內只有一個值的模式,然後在(2次迭代)之後立即搜索3個值的花括號,從而進行x次迭代,其中x =「{}」。

謝謝你們,我希望這是有道理的。

+0

你最好的選擇是在文檔中搜索字符串。然後提取匹配的字符串部分,然後進入並替換想要的大概更短的字符串。 – Falmarri 2012-07-05 23:52:19

+0

是的,這就是我目前正在做的事情,但搜索字符串時出現問題。我在查找「{」和「}」時搜索字符串,但是,如果胡蘿蔔內部含有花括號...... {{胡蘿蔔} |豌豆|黃瓜},胡蘿蔔將被替換兩次,只應更換一次,「{vegetables}」 – 2012-07-05 23:57:48

+0

這就是爲什麼我想在1次迭代中替換所有匹配而不是搜索和搜索的原因。 – 2012-07-05 23:58:33

回答

2

這不是一個真正的正則表達式問題,因爲在字符串中進行替換不在正則表達式的範圍之內。

這就是說,它取決於各種模式。如果你有一組相對較少的模式,那麼你可以設置一個從字符串到替換的Map,並且讓你的輸出迭代器查找它獲得的每個匹配的替換值。

例如,「蘋果」將映射到「水果」和「胡蘿蔔」將映射到「蔬菜」和「豆豆」也將映射到「蔬菜」等

相關問題