Javaの正規表現でマッチした部分文字列を取得する

提供: Java入門
移動: 案内検索
スポンサーリンク

Javaの正規表現でパターンマッチをするで簡単な正規表現マッチを説明しました。ここでは、マッチした部分文字列を取得する方法や複数のマッチを扱う方法について説明します。

読み方

正規表現
せいきひょうげん

概要

正規表現でマッチした部分を取得するには、Matcherのgroup()を利用します。複数のマッチした部分がある場合は、Matcherのfind()とgroup()を利用します。

String s1 = "foo(0)";
String regex = "([0-9]+)";
Pattern p = Pattern.compile(regex);
Matcher m1 = p.matcher(s1);
if (m1.find()) {
	// マッチした部分文字列の表示を行う
	System.out.println( m1.group () );
}

do-while()などでループすると複数マッチを簡単に扱えます。

if (m.find() ) {
	System.out.print ( " はマッチしました。" );
	do {
		// マッチした部分文字列を表示する
		System.out.print ( m.group() + " ");
	} while (m.find() ); // マッチした数だけループする
	System.out.println (  );
}

ソースコード

/*
 * Regex2.java
 * Copyright (C) 2015 kaoru <kaoru@bsd>
 */
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Regex2
{
        public static void show(Matcher m, String s) {
                System.out.print ( s + " " );
                if (m.find() ) {
                        System.out.print ( " はマッチしました。" );
                        do {
                                System.out.print ( m.group() + " ");
                        } while (m.find() );
                        System.out.println (  );
 
                } else {
                        System.out.println ( " はマッチしてません。" );
                }
 
        }
        public static void main(String[] args) {
                String s1 = "foo(0)";
                String s2 = "bar(200)";
                String s3 = "hoge(200) hoge(300)";
                String s4 = "meta(META)";
 
                String regex = "([0-9]+)";
                Pattern p = Pattern.compile(regex);
 
                Matcher m1 = p.matcher(s1);
                show(m1, s1);
                Matcher m2 = p.matcher(s2);
                show(m2, s2);
 
                show(p.matcher(s3), s3);
                show(p.matcher(s4), s4);
        }
}

コンパイル

$ javac Regex2.java

実行例

$ java Regex2
foo(0)  はマッチしました。0
bar(200)  はマッチしました。200
hoge(200) hoge(300)  はマッチしました。200 300
meta(META)  はマッチしてません。

関連項目




スポンサーリンク