【エラー解決方法】JavaのreplaceAllでエラーが出たときの対処法

こんにちは。堀部です。
 
Javaで文字列を置換しようとした際にreplaceAllを使用しましたが、エラーが発生しました。
 
その際の解決方法をご紹介します。

エラー内容

java.lang.IllegalArgumentException: Illegal group reference: group index is missing
at java.util.regex.Matcher.appendReplacement(Matcher.java:819)
at java.util.regex.Matcher.replaceAll(Matcher.java:955)
at java.lang.String.replaceAll(String.java:2223)

エラー発生時の環境

エラー発生時の環境は、下記の通りです。

Java
1.8

エラー解決方法

replaceAllのJavaDocにも記載がありますが、置換文字列内でバックスラッシュ(\)やドル記号($)を使用すると、それらは特殊な意味を持つ記号であるためにエラーとなってしまいます。
 
バックスラッシュ(\)やドル記号($)を含む文字列を置換したい場合はMatcher.quoteReplacementを使用します。

	str.replaceAll(regex, Matcher.quoteReplacement(replacement));

 
これで無事に置換ができました。
 
 
 
 
《関連記事》

記事をシェア
MOST VIEWED ARTICLES