正規表現のパターンにマッチした箇所の置換
前回の 「正規表現によるスプリット」に引き続き、知らないと面倒くさい、 知っていると簡単にできることの例として、正規表現による文字列の置換を紹介します。
正規表現による文字列の置換
正規表現を用いた置換のために Matcher オブジェクトの replaceAll() メソッドと replaceFirst() メソッドを利用します。
replaceAll() メソッドではマッチする箇所全てを置換します。
一方、replaceFirst() メソッドではマッチした最初の箇所だけを置換します。
正規表現を用いた文字列置換の例
それでは、特定の文字列から正規表現のパターンにマッチする箇所を探し、その場所を置換するという操作をしてみましょう。
次のコードをみてください。
package com.keicode.java.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestApp {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher("SN123 xyz SN456");
System.out.println(m.replaceAll("#"));
System.out.println(m.replaceFirst("#"));
}
}
実行結果は次の通り。
SN# xyz SN#
SN# xyz SN456
元の文字列は "SN123 xyz SN456" で、パターン文字列は \d+ (ひとつ以上の数字) です。このため "SN123 xyz SN456" の "SN123 xyz SN456" の部分にマッチします。
以上のことから、上の実行結果のようになります。