Javaにおける正規表現の複数回マッチ

Perl正規表現マッチのgオプションみたいに,繰り返して正規表現にマッチする方法を知らなかったので,勉強.
PatternクラスとMatcherクラスを使うと,Iteratorと同じように利用することができる.
こんな感じ

import java.util.regex.*;

public class RegexTest {
  public static void main(String args[]){
		
    String str = "hoge:foo:bar:piyo";
    String targetPattern = "([^:]+)(:|$)";

    Pattern pat = Pattern.compile(targetPattern);
    Matcher mat = pat.matcher(str);
		
    while(mat.find()){
       String matchedString = mat.group(1);
       System.out.println(matchedString);
    }
  }
}
% java RegexTest
hoge
foo
bar
piyo

Mather.group()メソッドの引数は,マッチ変数のこと.Perlでいうところの$1, $2ってやつ.
どう考えてもPerlの方が効率いいけれど,Javaもこつこつ書いていこう