文字列の中の正規表現パターンとマッチする部分を置換する

String クラスで用意されている replaceFirst または replaceAll メソッドを使用すると、文字列の中でパターンとマッチする部分文字列を別の文字列に置換することができます。 replaceFirst メソッドでは最初にマッチした文字列を置換し、 replaceAll メソッドではマッチしたすべての文字列を置換します。ここでは Java で文字列の中の正規表現パターンとマッチする部分を置換する方法について解説します。

(Last modified: )

String.replaceFirstメソッドの使い方

正規表現を利用して対象の文字列がパターンと最初にマッチした部分文字列を置換するには String クラスの replaceFirst メソッドを使います。書式は次のとおりです。

public String replaceFirst(String regex, String replacement)

パラメータ:
regex - この文字列との一致を判定する正規表現
replacement - 最初に一致するものに置き換えられる文字列

戻り値:
結果となるString

例外:
PatternSyntaxException - 正規表現の構文が無効な場合

1 番目の引数に指定した正規表現パターンと最初にマッチした部分文字列を 2 番目の引数に指定した文字列で置換します。戻り値として置換を行った新しい文字列を返します。

次のサンプルを見てください。

String regex  = "aA|Aa|aa";
String str = "AA BB aA Aa CC aa";

System.out.println(str.replaceFirst(regex, "AA")); // AA BB AA Aa CC aa

パターンとして red または Red とマッチします。対象の文字列の中で最初にパターンとマッチした部分文字列を RED に置換しました。

なお String クラスの replaceFirst? メソッドは、 Matcher クラスの replaceFirst メソッドを使用した場合と同じです。 Java における正規表現の使用方法について詳しくは「Java正規表現の使い方」を参照されてください。

String.replaceAllメソッドの使い方

正規表現を利用して対象の文字列がパターンとマッチしたすべての部分文字列を置換するには String クラスの replaceAll メソッドを使います。書式は次のとおりです。

public String replaceAll(String regex, String replacement)

パラメータ:
regex - この文字列との一致を判定する正規表現
replacement - 一致するものそれぞれに置き換えられる文字列

戻り値:
結果となるString

例外:
PatternSyntaxException - 正規表現の構文が無効な場合

1 番目の引数に指定した正規表現パターンとマッチしたすべての部分文字列を 2 番目の引数に指定した文字列で置換します。戻り値として置換を行った新しい文字列を返します。

次のサンプルを見てください。

String regex  = "aA|Aa|aa";
String str = "AA BB aA Aa CC aa";

System.out.println(str.replaceAll(regex, "AA")); // AA BB AA AA CC AA

パターンとして red または Red とマッチします。対象の文字列の中でパターンとマッチしたすべての部分文字列を RED に置換しました。

なお String クラスの replaceAll? メソッドは、 Matcher クラスの replaceAll メソッドを使用した場合と同じです。

サンプルコード

それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample21-1.java という名前で保存します。

class JSample21_1{
  public static void main(String[] args){
    String regex  = "aA|Aa|aa";
    String str = "AA BB aA Aa CC aa";

    System.out.println(str.replaceFirst(regex, "AA"));
    System.out.println(str.replaceAll(regex, "AA"));
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample21_1.java

その後で、次のように実行してください。

java JSample21_1

String.replaceFirst?およびString.replaceAll?メソッドの使い方(1)

パターンとマッチした部分文字列について最初にマッチしたものだけを置換した場合とマッチしたすべてを置換した場合でそれぞれ取得しました。

-- --

Java で文字列の中の正規表現パターンとマッチする部分を置換する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。