2015-08-22 81 views
1

我的錯誤:「Invalid ecape sequence在這個表達式:Java的正則表達式刪除 「/*....*/」 和 「{} .....」

(\/\*[^/*]*(?:(?!\/\*|\*\/)[/*][^/*]*)*\*\/)|(\{.*?\}) 

是否還有其他的正則表達式是是更合適的,或者我該怎麼辦才能修復這個正則表達式?

+3

再次轉義所有反斜槓。 –

+0

也許'「(?s)/\\*.*?\\*/ | \\ {。*?}」'就足夠滿足您的需求。 –

回答

2

你需要再次逃避反斜槓像'\ t'這樣的特殊字符,當它看到你的正則表達式的開始時,例如'\ /',它就會認爲你在尋找一個特殊的字符,並且它會抱怨,因爲這個序列對於這個目的是無效的。 o在正則表達式中考慮反斜槓,你需要'\\'。

這就是說,處理註釋和大括號的整個方法通常不起作用,因爲它會遇到各種情況,比如花括號中的嵌套塊。 (僅舉許多之一。)

0
(\/\*[^\/*]*(?:(?!\/\*|\*\/)[\/*][^\/*]*)*\*\/)|(\{.*?\}) 

這是正確的正則表達式,你錯過了逃跑的斜線代表一個正則表達式序列的開始和結束。

這是一個簡化版本(\/\*.*\*\/|\{.*\})