2013-02-19 25 views
0

我寫一些代碼從一個字符串中刪除括號及其內容,但此行無法正常工作:Java的正則表達式引擎是否被破壞?

line.replaceAll("\\Q"+matchp+"\\E", rep); 

這應該替換所有找到的小組,說:「(組)多個單詞」和正則表達式匹配的「(組)」,那麼該字符串將成爲代表+「更多的話」。但字符串不受影響。報價被打破?

+10

我敢打賭,你沒有價值重新分配給'line'。 – 2013-02-19 14:54:07

+1

現在是閱讀關於字符串和Java的不變性的時間.... – 2013-02-19 14:57:13

+0

除非你不犯任何愚蠢的錯誤java的'正則表達式'引擎很弱.. – Anirudha 2013-02-19 15:03:23

回答

11

replaceAll不就地做到這一點,像這樣:

line = line.replaceAll("\\Q"+matchp+"\\E", rep); 
+0

我剛剛意識到這一點。我有點累,忘記了不可變的字符串。 – 2013-02-19 14:59:17

相關問題