
こんにちは。堀部です。
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を使用します。
1 |
str.replaceAll(regex, Matcher.quoteReplacement(replacement)); |
これで無事に置換ができました。
《関連記事》
- 作業効率UP! Spring + log4jdbcで実行したSQLのログを出力する方法
- 実務でよく使う! PostgreSQLで日時を扱うTIPS7選
- PostgreSQLの運用で押さえておきたい! 運用、監視で役立つSQL
- 【エラー解決方法】pg_dumpコマンドでクライアントとサーバーのバージョンが合わないときの対処法
- 【エラー解決方法】PostgreSQLでダンプを取得しようとしたら認証エラーが出たときの対処法

