JDK7 - Java正規表現の名づけgroup機能
2009/03/12 11:25Update
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
Sponsored Link
Comments
- Relative Articles
- Java開発及び実行環境の構築 | Linux篇 - (2008/08/31 20:34)
- Java開発及び実行環境の構築 | Windows篇 - (2008/08/31 21:18)
- 5分でJava Hello World! - (2008/08/31 22:13)
- Java言語の制御構文 - 条件分岐if/else/else if - (2008/10/01 21:30)
- Java言語の繰り返し制御構文 - for文 - (2008/10/03 18:22)
- Java言語の繰り返し制御構文 - do ... while文 - (2008/10/03 21:23)
- Java言語の繰り返し制御構文 - while文 - (2008/10/03 21:32)
- Java言語の基礎 - javacコマンドによるコンパイル - (2008/10/10 17:58)
- Java アクセス修飾子概要 - (2008/10/29 18:31)
- Javaアノテーション機能 概要 - (2009/02/12 13:06)