2015-10-26 50 views
0

當我嘗試將此轉換「(| {|;)」正則表達式的字符串,Java的給了我這樣的例外:爲什麼'{'在這個正則表達式中不被接受?

Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 2 
(|{|;) 
^

我該如何解決呢?

+2

通過將'{'與'['和']':'[{]'括起來。如果你需要匹配一個空格,或者一個大括號或一個';',把它們全部添加到字符類中:'[{;]' –

+3

看到表達本身就像看堆棧跟蹤一樣有用 – SomeJavaGuy

+0

謝謝stribizhev –

回答

5

錯誤與{被視爲限制量詞的開始(例如{1,2})。您需要將其轉義或在角色類中使用。

用正則表達式判斷你有 - (|{|;) - 問題出在特殊的正則表達式處理上。既然你想要匹配一個空格,一個大括號或一個分號,建議使用一個字符類而不是一個替換組。

因此,使用

([ {;]) 

字符類是一個更好的解決方案,交替,因爲它涉及較少的回溯。

+0

I猜測你正在分裂,否則,刪除圓括號(捕獲組)。 –

相關問題