Java 正規表現で真偽値を返す(matchesメソッド)

Javaの正規表現で文字列を検索し真偽値(trueまたはfalse)を返すサンプルです。

目次

matchesメソッド

public boolean matches()

文字列を検索する

文字列を検索するサンプルです。

package test1;

public class Test1 {
    public static void main(String[] args) {

    	String a = ".BC";
    	
    	System.out.println("ABC".matches(a));//true
    	
    	System.out.println("ACB".matches(a));//false
    }
}

6行目は、正規表現で任意の1文字とBCという文字を指定しています。
ピリオド(.)は、任意の1文字を表します。
8行目はtrueに、10行目はfalseになります。

文字をORで検索する

文字をORで検索するサンプルです。

package test1;

public class Test1 {
    public static void main(String[] args) {

    	String a = "A[BC]";
    	
    	System.out.println("AB".matches(a));//true
    	
    	System.out.println("AC".matches(a));//true
    	
    	System.out.println("ABC".matches(a));//false
    }
}

6行目は、正規表現で「A」と、「B」または「C」という文字列であるかを指定しています。
8,10行目は、trueになります。
12行目は、2文字目までの条件は合致しますが、3文字目があるのでfalseになります。

文字を否定で検索する

文字を否定で検索するサンプルです。

package test1;

public class Test1 {
    public static void main(String[] args) {

    	String a = "ZZ[^AB]";
    	
    	System.out.println("ZZZ".matches(a));//true
    	
    	System.out.println("ZZA".matches(a));//false
    	
    	System.out.println("ZZB".matches(a));//false
    }
}

6行目は、正規表現で文字列の3文字目が「A」と「B」以外の文字であることを指定しています。
8行目は、「A」と「B」以外の文字なのでtrueになります。
10行目は、文字「A」なのでfalseになります。
12行目は、文字「B」なのでfalseになります。

文字を範囲で指定して検索する

文字を範囲で指定して検索するサンプルです。

package test1;

public class Test1 {
    public static void main(String[] args) {

    	String a = "A[A-C]C";
    	
    	System.out.println("ABC".matches(a));//true
    	
    	System.out.println("AZC".matches(a));//false
    }
}

6行目は、正規表現で文字列の2文字目が「A」または「B」または「C」の文字があるか指定しています。
8行目は、指定の文字があるのでtrueになります。
10行目は、指定の文字がないのでfalseになります。

先頭の文字列を検索する

先頭の文字列を検索するサンプルです。

package test1;

public class Test1 {
    public static void main(String[] args) {

    	String a = "^AB.";
    	
    	System.out.println("ABC".matches(a));//true
    	
    	System.out.println("AZC".matches(a));//false
    }
}

6行目は、正規表現で先頭に「AB」の文字があるか指定しています。
文字を否定で検索する正規表現と似ていますが、こちらは角かっこ([])がありません。
8行目は、指定の文字があるのでtrueになります。
10行目は、指定の文字がないのでfalseになります。

文字列の最後尾を検索する

文字列の最後尾を検索するサンプルです。

package test1;

public class Test1 {
    public static void main(String[] args) {

    	String a = ".BC$";
    	
    	System.out.println("ABC".matches(a));//true
    	
    	System.out.println("AZC".matches(a));//false
    }
}

6行目は、正規表現で最後尾に「BC」の文字があるか指定しています。
8行目は、指定の文字があるのでtrueになります。
10行目は、指定の文字がないのでfalseになります。

連続する文字を指定して検索する

連続する文字を指定して検索するサンプルです。

package test1;

public class Test1 {
    public static void main(String[] args) {

    	String a = "ac{2}b";
    	
    	System.out.println("accb".matches(a));//true
    	
    	System.out.println("acccb".matches(a));//false
    	
    	System.out.println("acb".matches(a));//false
    }
}

6行目は、正規表現で「c」が2回連続することを指定しています。
8行目は、指定の文字があるのでtrueになります。
10,12行目は、指定の文字がないのでfalseになります。

連続する文字(個以上)を指定して検索する

連続する文字(個以上)を指定して検索するサンプルです。

package test1;

public class Test1 {
    public static void main(String[] args) {

    	String a = "ac{2,}b";
    	
    	System.out.println("accb".matches(a));//true
    	
    	System.out.println("acccb".matches(a));//true
    	
    	System.out.println("acb".matches(a));//false
    }
}

6行目は、正規表現で「c」が2回以上連続することを指定しています。
8,10行目は、指定の文字があるのでtrueになります。
12行目は、指定の文字がないのでfalseになります。

1桁以上の半角数値のみかをチェックする

1桁以上の半角数値のみかをチェックするサンプルです。

package test1;

public class Test1 {
    public static void main(String[] args) {

    	String a = "^[0-9]+$";
    	
    	System.out.println("123456".matches(a));//true
    	
    	System.out.println("123a".matches(a));//false
    	
    	System.out.println("".matches(a));//false
    }
}

6行目は、正規表現で1桁以上の半角数値のみであることを指定しています。
8行目は、指定の文字があるのでtrueになります。
10行目は、数値以外の文字があるのでfalseになります。
12行目は、数値がないのでfalseになります。

1桁以上の半角数値または英字の小文字(a-f)のみかをチェックする

1桁以上の半角数値または英字の小文字(a-f)のみかをチェックするサンプルです。

package test1;

public class Test1 {
    public static void main(String[] args) {

    	String a = "^[0-9a-f]+$";
    	
    	System.out.println("123456abc".matches(a));//true
    	
    	System.out.println("123".matches(a));//true
    	
    	System.out.println("abc".matches(a));//true
    	
    	System.out.println("123A".matches(a));//false
    }
}

6行目は、正規表現で1桁以上の半角数値または英字の小文字(a-f)のみかを指定しています。
8,10,12行目は、指定の文字があるのでtrueになります。
14行目は、英字の大文字があるのでfalseになります。

郵便番号の桁数と数値のチェックする

郵便番号の桁数と数値のチェックするサンプルです。

package test1;

public class Test1 {
    public static void main(String[] args) {

    	String a = "^\\d{3}-\\d{4}$";
    	
    	System.out.println("123-4567".matches(a));//true
    	
    	System.out.println("1234567".matches(a));//false
    	
    	System.out.println("1234-567".matches(a));//false
    }
}

6行目は、正規表現で郵便番号の桁数と数値であることを指定しています。
8行目は、指定の文字列なのでtrueになります。
10,12行目は、指定の文字列ではないのでfalseになります。

正規表現の主なパターン

以下は、正規表現の主なパターンです。

パターン パターンの意味
ABD ABDという文字か。
[ABD] A or B or Dのどれか1文字が入っているか。
[^ABD] A と B と D以外の1文字が入っているか。否定です。
先頭の文字の正規表現と似ています。
[A-C] A or B or C のどれか1文字が入っているか。
A|B|D A or B or Dのどれか1文字が入っているか。
[a-zA-Z] 英字の小文字のaからzまたは大文字のAからZのどれか1文字が入っているか。
^A 先頭の文字はAか。
否定の正規表現と似ています。
A$ 最後尾の文字はAか。
* *の直前の文字が0回以上の繰り返し。
+ +の直前の文字が1回以上の繰り返し。
? ?の直前の文字が0回または1回の繰り返し。
{n} n回続いている。
{n,} n回以上続いている。
 . 任意の一文字を表す。
¥s 比較する文字に、空白1文字がある。
¥d 比較する文字に、数字1文字がある。 ([0-9]と同じ)
¥w 比較する文字に、小文字の英字 or 大文字の英字 or 数値 or アンダースコアの1文字がある。
[a-zA-Z0-9_]と同じ

関連の記事

Java 文字列を分割して配列にする(split)
Java 文字列を置き換えるサンプル(replace)

△上に戻る