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メソッドも利用できます。
String#replaceAllメソッド
正規表現パターンを再利用しないならば、String#replaceAllメソッドの方が簡単に表せます。以下は、上と同じ意味のコードです。
RegexReplace2.java(抜粋)
System.out.println(msg.replaceAll("[¥¥w¥¥.¥¥-]+@([¥¥w¥¥-]+¥¥.)+[¥¥w¥¥-]+", "$0"));