JDK7 - Java正規表現の名づけgroup機能

2009/03/12 11:25Update
TAGS: Java | JDK7 | 正規表現 | 命名 | named | group | グループ

Python, PHP, .Net and Perlなどの言語に正規表現のグループに名づけることができますが、Java言語では未だそのような機能が提供されていません。sunの開発者ブログによりますと、JDK7 b50から予約名づけグループ機能も提供されるようになりました。

JDK7 名づけ機能


(1) (?<NAME>X) :グループ名(NAME)を定義する
(2) \k<Name> to backref a named group "NAME"
(3) <$<NAME> :置き換え時、名づけられたグループを参照する。
(4) group(String NAME):指定する名称のグループと合致(マッチ)する文字列を取得

使用例:


    String pStr = "0x(?<bytes>\\p{XDigit}{1,4})\\s++u\\+(?<char>\\p{XDigit}{4})(?:\\s++)?";
    Matcher m = Pattern.compile(pStr).matcher(INPUTTEXT);    //INPUTTEXTはString型文字列
    if (m.matches()) {
        int bs = Integer.valueOf(m.group("bytes"), 16);    //bytesグループ
        int c =  Integer.valueOf(m.group("char"), 16);    //charグループ
        System.out.printf("[%x] -> [%04x]%n", bs, c);
    }


もしくは、
    System.out.println("0x1234 u+5678".replaceFirst(pStr, "u+$<char> 0x$<bytes>"));


参考資料


jdk7 Build b50
Named Capturing Group in JDK7 RegEx

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments

用户名 (required)

Email (will not be published) (required)

URL

Evaluation