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

Javaの正規表現で値を返すサンプルです。
Matcherクラスのgroupメソッドを使用します。

目次

Matcherクラスのgroupメソッド

public String group()

文字列を検索する

文字列を検索し一致した文字列を返すサンプルです。

package test1;

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

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

        String a = "ABCABC";
    	
    	Pattern p = Pattern.compile("BC");
    	Matcher m = p.matcher(a);

        while (m.find()) {
            System.out.println(m.group()); // BC BC
        }
    }
}

9行目は、対象の文字列です。
11行目は、文字列のBCを指定しています。
14行目は、findメソッドで先頭の文字から一致する部分を検索します。
15行目は、groupメソッドです。11行目で指定したBCが2回表示されます。

文字をORで検索する

文字をORで検索し一致した文字列を返すサンプルです。

package test1;

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

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

        String a = "ABCABC";
    	
    	Pattern p = Pattern.compile("[BC]");
    	Matcher m = p.matcher(a);

        while (m.find()) {
            System.out.println(m.group()); // B C B C
        }
    }
}

9行目は、対象の文字列です。
11行目は、文字のBまたはCという意味です。
14行目は、findメソッドで先頭の文字から一致する部分を検索します。
15行目は、groupメソッドです。11行目で指定したBとCが合計4回表示されます。

文字を否定で検索する

文字を否定で検索し一致した文字列を返すサンプルです。

package test1;

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

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

        String a = "ABCABC";
    	
    	Pattern p = Pattern.compile("[^B]");
    	Matcher m = p.matcher(a);

        while (m.find()) {
            System.out.println(m.group()); // A C A C
        }
    }
}

9行目は、対象の文字列です。
11行目は、文字のB以外いう意味です。
14行目は、findメソッドで先頭の文字から一致する部分を検索します。
15行目は、groupメソッドです。11行目で指定したB以外のAとCが合計4回表示されます。

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

文字を範囲で指定して検索し一致した文字列を返すサンプルです。

package test1;

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

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

        String a = "ABCDABCD";
    	
    	Pattern p = Pattern.compile("[A-C]");
    	Matcher m = p.matcher(a);

        while (m.find()) {
            System.out.println(m.group()); // A B C A B C
        }
    }
}

9行目は、対象の文字列です。
11行目は、文字のAとBとCという意味です。
14行目は、findメソッドで先頭の文字から一致する部分を検索します。
15行目は、groupメソッドです。11行目で指定したAからCの文字が合計6回表示されます。

先頭の文字列を検索する

先頭の文字列を検索し一致した文字列を返すサンプルです。

package test1;

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

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

        String a = "ABCDABCD";
    	
    	Pattern p = Pattern.compile("^AB");
    	Matcher m = p.matcher(a);

        while (m.find()) {
            System.out.println(m.group()); // AB
        }
    }
}

9行目は、対象の文字列です。
11行目は、文字列のABで始まるという意味です。
14行目は、findメソッドで先頭の文字から一致する部分を検索します。
15行目は、groupメソッドで11行目で指定したABの文字が表示されます。

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

文字列の最後尾を検索し一致した文字列を返すサンプルです。

package test1;

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

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

        String a = "ABCABC";
    	
    	Pattern p = Pattern.compile("BC$");
    	Matcher m = p.matcher(a);

        while (m.find()) {
            System.out.println(m.group()); // BC
        }
    }
}

9行目は、対象の文字列です。
11行目は、文字列のBCで終わるという意味です。
14行目は、findメソッドで先頭の文字から一致する部分を検索します。
15行目は、groupメソッドで11行目で指定したBCの文字が表示されます。

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

連続する文字を指定して検索し一致した文字列を返すサンプルです。

package test1;

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

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

        String a = "ACCACCC";
    	
    	Pattern p = Pattern.compile("C{2}");
    	Matcher m = p.matcher(a);

        while (m.find()) {
            System.out.println(m.group()); // CC CC
        }
    }
}

9行目は、対象の文字列です。
11行目は、文字のCが2回続くという意味です。
14行目は、findメソッドで先頭の文字から一致する部分を検索します。
15行目は、groupメソッドで11行目で指定したCCが2回表示されます。

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

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

package test1;

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

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

        String a = "ACCACCC";
    	
    	Pattern p = Pattern.compile("C{2,}");
    	Matcher m = p.matcher(a);

        while (m.find()) {
            System.out.println(m.group()); // CC CCC
        }
    }
}

9行目は、対象の文字列です。
11行目は、文字のCが2回以上続くという意味です。
14行目は、findメソッドで先頭の文字から一致する部分を検索します。
15行目は、groupメソッドで11行目で指定したCCが2回以上続く文字列が表示されます。

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

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

package test1;

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

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

        String a = "12345";
    	
    	Pattern p = Pattern.compile("^[0-9]+$");
    	Matcher m = p.matcher(a);

        while (m.find()) {
            System.out.println(m.group()); // 12345
        }
    }
}

9行目は、対象の文字列です。
11行目は、1桁以上の半角数値という意味です。
14行目は、findメソッドで先頭の文字から一致する部分を検索します。
15行目は、groupメソッドで11行目で指定した1桁以上の半角数値が表示されます。

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

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

package test1;

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

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

        String a = "123456abc";
    	
    	Pattern p = Pattern.compile("^[0-9a-f]+$");
    	Matcher m = p.matcher(a);

        while (m.find()) {
            System.out.println(m.group()); // 123456abc
        }
    }
}

9行目は、対象の文字列です。
11行目は、1桁以上の半角数値または英字の小文字(a-f)という意味です。
14行目は、findメソッドで先頭の文字から一致する部分を検索します。
15行目は、groupメソッドで11行目で指定した文字列が表示されます。

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

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

package test1;

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

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

        String a = "123-4567";
    	
    	Pattern p = Pattern.compile("^\\d{3}-\\d{4}$");
    	Matcher m = p.matcher(a);

        while (m.find()) {
            System.out.println(m.group()); // 123-4567
        }
    }
}

9行目は、対象の文字列です。
11行目は、郵便番号の桁数と数値であることという意味です。
14行目は、findメソッドで先頭の文字から一致する部分を検索します。
15行目は、groupメソッドで11行目で指定した文字列が表示されます。

正規表現の主なパターン

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

パターン パターンの意味
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 正規表現で真偽値を返す(matchesメソッド)
Java 文字列を分割して配列にする(split)
Java 文字列を置き換えるサンプル(replace)

△上に戻る