正規表現のパターンにマッチした箇所の置換

前回の 「正規表現によるスプリット」に引き続き、知らないと面倒くさい、 知っていると簡単にできることの例として、正規表現による文字列の置換を紹介します。

正規表現による文字列の置換

正規表現を用いた置換のために 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" の部分にマッチします。

以上のことから、上の実行結果のようになります。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Java 入門