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もこつこつ書いていこう