Java 正規表現で複数の値を返す(group)

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

目次

説明 Matcherクラスのgroupメソッド
サンプル 文字列を検索する
  文字をORで検索する
  文字を否定で検索する
  文字を範囲で指定して検索する
  連続する文字を指定して検索する
  連続する文字(個以上)を指定して検索する
パターン 正規表現の主なパターン

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回以上続く文字列が表示されます。

正規表現の主なパターン

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

パターン パターンの意味
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 文字列を置換するサンプル

△上に戻る