Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

replaceAllメソッド

文字列を置き換える – replaceAllメソッド
public String replaceAll(String rep)
rep:置き換え後の文字列

正規表現パターンにマッチした文字列を置き換えるには、Matcher#replaceAllメソッドを利用します。replaceAllメソッドの引数repには、プレイスホルダーとして$0…$9を含めることができます。$0はマッチング文字列全体を、$1~$9はサブマッチ文字列を意味します。サブマッチ文字列とは、正規表現パターンで(…)に囲まれた部分にマッチした文字列のことです。
たとえば以下は、文字列に含まれるメールアドレスを、アンカータグに置き換える例です。

RegexReplace.java

package com.example.mynavi.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexReplace {
  public static void main(String[] args) {
    String msg = "お問い合わせは、 sample@examples.com 、" + 
      "または、examples@mcn.ne.jpまで";
    Pattern p = Pattern.compile(
      "[\w\.\-]+@([\w\-]+\.)+[\w\-]+", Pattern.CASE_INSENSITIVE);
    Matcher m = p.matcher(msg);
    System.out.println(m.replaceAll("$0"));
  }
}

↓

お問い合わせは、 sample@examples.com 、または、examples@mcn.ne.jpまで

マッチしたすべての文字列ではなく、最初の文字列だけを置き換えたいならば、replaceFirstメソッドも利用できます。

note

String#replaceAllメソッド
正規表現パターンを再利用しないならば、String#replaceAllメソッドの方が簡単に表せます。以下は、上と同じ意味のコードです。

RegexReplace2.java(抜粋)

System.out.println(msg.replaceAll("[\w\.\-]+@([\w\-]+\.)+[\w\-]+",
  "$0"));
正規表現
主な正規表現パターン
Pattern/Matcherクラス
replaceAllメソッド
splitメソッド

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職