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) はマッチしてません。
関連項目
- Javaの正規表現でパターンマッチをする
- Javaの正規表現でマッチした部分文字列を取得する
ツイート
スポンサーリンク