文字列の全体がパターンとマッチするか調べる(Matcher.matches)

Matcher クラスの matches メソッドは、対象の文字列全体がパターンとマッチするかどうかを調べます。対象の文字列の一部分でマッチしても matches メソッドではマッチとはなりません。ここでは Java の正規表現で matches メソッドを使って文字列の全体がパターンとマッチするか調べる方法について解説します。

(Last modified: )

matchesメソッドの使い方

Matcher クラスの matches メソッドは対象の文字列全体がパターンにマッチするかどうかを調べます。書式は次の通りです。

public boolean matches()

戻り値:
領域シーケンスの全体がこの正規表現エンジンのパターンとマッチした場合にのみtrue

Matcher オブジェクトのパターンが対象の文字列全体とマッチすれば true 、そうでなければ false が戻り値として返ります。文字列全体とマッチするというのは、対象の文字列の先頭文字から最後の文字までがパターンとマッチするという意味です。

例えば、パターン文字列 "S.*t" で対象の文字列が "JavaScript" だった場合、パターンは対象の文字列の一部とマッチしますが文字列全体とはマッチしないため false となります。対象の文字列が "Script" や "Set" の場合は true となります。

matchesメソッドの使い方(1)

※ パターン文字列 "S.*t" は S で始まり、任意の文字が 0 文字以上続いたあと t で終わる文字列とマッチします。

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

// java.util.regex.*のインポートが必要です
import java.util.regex.*;

String regex = "S.*t";
Pattern p = Pattern.compile(regex);

Matcher m1 = p.matcher("Script");
System.out.println(m1.matches());  // true

Matcher m2 = p.matcher("JavaScript");
System.out.println(m2.matches());  // false

パターン "S.*t" は "Script" 全体とマッチするので true を返しますが、 "JavaScript" 全体とはマッチしないため false を返します。

サンプルコード

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

import java.util.regex.*;

class JSample3_1{
  public static void main(String[] args){
    String regex = "S.*t";
    Pattern p = Pattern.compile(regex);

    Matcher m1 = p.matcher("JavaScript");
    System.out.println(m1.matches());

    Matcher m2 = p.matcher("Script");
    System.out.println(m2.matches());

    Matcher m3 = p.matcher("Set");
    System.out.println(m3.matches());
  }
}

コンパイルを行います。

javac -encoding UTF-8 JSample3_1.java

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

java JSample3_1

matchesメソッドの使い方(2)

パターン文字列が、 3 つの文字列に対してそれぞれ文字列全体とマッチするかどうかを調べ結果を画面に表示しました。

-- --

Java の正規表現で matches メソッドを使って文字列の全体がパターンとマッチするか調べる方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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