[Java7]正規表現のグループに名前を付ける
Java6以前では正規表現にヒットした文字列をするために、Matcher.group(int)で何番目のグループかを指定しなければならなかった。
順番指定だと、新たにグループを付け足した際にすべて修正が必要であり、正規表現の黒魔術度を上げていた。
Java7では、"(?<グループ名>正規表現)"でグループに名称をつけることができ、Matcher.group(String)で取得することができる。
サンプルコード
String regrex = "(?<TYPE>GET|POST) (?<IP>\\d+\\.\\d+\\.\\d+\\.\\d+)"; String sample = "GET 127.16.0.1"; Matcher matcher = Pattern.compile(regrex).matcher(sample); if(matcher.find()){ System.out.println(matcher.group(1)); //GET System.out.println(matcher.group("TYPE")); //GET System.out.println(matcher.group(2)); //127.16.0.1 System.out.println(matcher.group("IP")); //127.16.0.1 }