2012-01-22 54 views
0

我正在使用MatcherString中查找包含文本的特定模式。
正則表達式檢查各種模式,例如爲簡單起見:
\\bword1\\b|(\\b(?:word2(?:(\\s+)word3)?)?)如何使用匹配器來正確替換字符串內模式的所有出現

無論如何,我可以找到字符串中的模式。
到目前爲止確定。

我想要的是能夠使用Matcher.replaceAll來替換髮現的每個模式,相同的模式,但有一些補充。

E.g.

如果匹配器在某處發現word1,我想用{v}word1{v}替換它。

這是如何做到最好的?我試圖添加匹配器在列表中找到的組,然後遍歷輸入字符串來替換所有,但顯然這沒有奏效。

UPDATE:
我可以匹配我所需要的條件和@Luis正則表達式並替換,但我需要更換所有在我的字符串。
通過在字符串中循環並執行正則表達式"pattern", "{v}$0{v}")我打破了以前發生的事件。我需要以某種方式包括在的replaceAll負回顧後,以理解當一個術語已經被替換

UPDATE:
使用正則表達式@Luis和負回顧後,它的工作

回答

1

更新:

"pattern".replaceAll("pattern", "{v}$0{v}"))

我測試這一點,它返回 「{v}圖案{v}」 如所期望。

+0

這不起作用。它在結果中打印出「{v} 1 {v}」。 – Cratylus

+0

已修復並經過實際測試。 –

+0

我會給你一個+1,但是這並不能解決我的問題。當我循環爲每個找到的術語執行replaceAll時,我會中斷以前的修改,因爲我可以匹配'word1 word2',稍後在字符串'word2'中第二個replaceAll打破了早先發現的'word1 word2' – Cratylus

相關問題