Java replaceAll()メソッドが不正なグループ参照を報告する



Java Replaceall Method Reports Illegal Group Reference



replaceAll(regex、replacement)関数。最初のパラメーターは正規表現をサポートしているため、置換には「$」が表示され、$ 1 $ 2のグループ化モードに従って一致します。
コンパイラが「$」の後に整数が続かないことを検出すると、「不正なグループ参照」例外がスローされます。

たとえば、次のコードはエラーを報告します。



public class Test { public static void main(String[] args) { String str = '123ABC456' String re = '#7T$/#' System.out.println(str.replaceAll('ABC', re)) } }

エラーメッセージ:

Exception in thread 'main' java.lang.IllegalArgumentException: Illegal group reference at java.util.regex.Matcher.appendReplacement(Unknown Source) at java.util.regex.Matcher.replaceAll(Unknown Source) at java.lang.String.replaceAll(Unknown Source) at cn.com.vogue.Test.main(Test.java:6)

解決:



1つは、特殊文字を処理するためにJDKによって提供されるメソッドです。
置換される文字の処理コードは次のとおりです。

re = java.util.regex.Matcher.quoteReplacement(re)

特殊文字を特定の文字に変換し、処理のためにレシーバーに渡します。
たとえば、$を{ZF4}}に置き換えます。もちろん、あなたが会社であれば、次のことができます。

String[] strArr = ex.split('\$') StringBuffer sb = new StringBuffer() for(int i=0i

私のオリジナルを見るにはITEYEに行ってください: http://cuisuqiang.iteye.com



または私の個人的なブログをサポートしてください、アドレス: http://www.javacui.com