お知らせ
2023.12.5(Tue)
目次
こんにちは。堀部です。
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)
エラー発生時の環境は、下記の通りです。
replaceAllのJavaDocにも記載がありますが、置換文字列内でバックスラッシュ(\)やドル記号($)を使用すると、それらは特殊な意味を持つ記号であるためにエラーとなってしまいます。
バックスラッシュ(\)やドル記号($)を含む文字列を置換したい場合はMatcher.quoteReplacementを使用します。
str.replaceAll(regex, Matcher.quoteReplacement(replacement));