目前Java的正則表達式不支持命名捕獲組功能,只能通過捕獲組的計數來訪問捕獲組.當正則表達式比較複雜的時候,裡面含有大量的捕獲組和非捕獲組,通過從左至右數括弧來得知捕獲組的計數也是一件很煩人的事情;而且這樣做代碼的可讀性也不好,當正則表達式需要修改的時候也會改變裡面捕獲組的計數.
解決這個問題的方法是通過給捕獲組命名來解決,就像Python, PHP, .Net 以及Perl這些語言里的正則表達式一樣.這個特性Javaer已經期待了很多年,而現在我們終於在JDK7 b50得到了實現.
新引入的命名捕獲組支持如下:
|
現在你可以像這樣使用正則式:
1 String pStr = "0x(?\p{XDigit}{1,4})\s u\ (?\p{XDigit}{4})(?:\s )?"; |
或者
1 System.out.println("0x1234 u 5678".replaceFirst(pStr, "u $ 0x$")); |
[火星人 ] JDK 7中將支持正則表達式命名捕獲組已經有629次圍觀