2015-08-22 180 views
1

我的错误:“Invalid ecape sequence在这个表达式:Java的正则表达式删除 “/*....*/” 和 “{} .....”

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

是否还有其他的正则表达式是是更合适的,或者我该怎么办才能修复这个正则表达式?

+3

再次转义所有反斜杠。 –

+0

也许'“(?s)/\\*.*?\\*/ | \\ {。*?}”'就足够满足您的需求。 –

回答

2

你需要再次逃避反斜杠像'\ t'这样的特殊字符,当它看到你的正则表达式的开始时,例如'\ /',它就会认为你在寻找一个特殊的字符,并且它会抱怨,因为这个序列对于这个目的是无效的。 o在正则表达式中考虑反斜杠,你需要'\\'。

这就是说,处理注释和大括号的整个方法通常不起作用,因为它会遇到各种情况,比如花括号中的嵌套块。 (仅举许多之一。)

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

这是正确的正则表达式,你错过了逃跑的斜线代表一个正则表达式序列的开始和结束。

这是一个简化版本(\/\*.*\*\/|\{.*\})