2016-02-15 61 views
1

我正在使用Spring從屬性文件注入RegEx模式,但我遇到了涉及「&」符號的錯誤。Java - Spring注入正則表達式 - 非法字符 - &符號

Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal 
character range near index 34 [ A-Za-z0-9¦#_/<>[]():^¬+=%$£!`@'-&,.";*?\€] 

我的表達是:

[ A-Za-z0-9\¦#_/<>[\]():^¬+=%$£!`@'\-\u0026,.";*?\\\u20AC] 

它適用於RegExPal

我試圖逃避的性格和使用Unicode,但我仍然得到同樣的錯誤。

有誰知道是否有Java/Spring中的東西導致這種情況發生?

+0

不它需要一個XML符號?嘗試'&'另外,'-'應該放在字符類的最後。你還需要轉義'['(如果它是一個Java正則表達式)。請注意,RegexPal僅測試JavaScript和PCRE正則表達式。試試'[A-Za-z0-9|#_/<> \\ [\\]():^¬+ =%$£!\'@'\\ u0026,。「; *?\\\\ \\ u20AC-]',順便說一句,如果這不在一個XML中 –

+0

連字符在字符類中被看作是一個範圍定義字符(見''&&),因此錯誤信息('&'是十進制38和'''是十進制39,但範圍必須按升序排列) –

+0

任何反饋?有任何解決方案適用於您?我應該發佈我的嗎? –

回答

1

雙逃避連字符或保持在第一個或最後一個位置你的角色等級:

[- A-Za-z0-9¦#_/<>[\\]():^¬+=%$£!`@'\\u0026,.";*?\\\\\\u20AC] 

你可以清楚地從錯誤中,已經刪除了逃逸,請參閱:

character range near index 34 [ A-Za-z0-9¦#_/<>[]():^¬+=%$£!`@'-&,.";*?\€]