日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
在JDK7 b50中將實(shí)現(xiàn)正則表達(dá)式命名捕獲組

在JDK7 b50中將實(shí)現(xiàn)正則表達(dá)式命名捕獲組是眾望所歸,目前Java的正則表達(dá)式不支持命名捕獲組功能,只能通過捕獲組的計(jì)數(shù)來訪問捕獲組。當(dāng)正則表達(dá)式比較復(fù)雜的時(shí)候,里面含有大量的捕獲組和非捕獲組,通過從左至右數(shù)括號(hào)來得知捕獲組的計(jì)數(shù)也是一件很煩人的事情;而且這樣做代碼的可讀性也不好,當(dāng)正則表達(dá)式需要修改的時(shí)候也會(huì)改變里面捕獲組的計(jì)數(shù)。

平陰網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

解決這個(gè)問題的方法是通過給捕獲組命名來解決,就像Python, PHP, .Net 以及Perl這些語言里的正則表達(dá)式一樣。這個(gè)特性javaer已經(jīng)期待了很多年,而現(xiàn)在我們終于在jdk7 b50得到了實(shí)現(xiàn)。

新引入的命名捕獲組支持如下:

◆(?X) to define a named group NAME"

◆\k to backref a named group "NAME"

◆<$ to reference to captured group in matcher's replacement str

◆group(String NAME) to return the captured input subsequence by the given "named group"

在JDK7 b50中實(shí)現(xiàn)正則表達(dá)式命名捕獲組之后你可以像這樣使用正則式:

 
 
 
  1. String pStr = "0x(?\\p{XDigit}{1,4})\\s++u\\+(?\\p{XDigit}{4})(?:\\s++)?";  
  2.  
  3. Matcher m = Pattern.compile(pStr).matcher(INPUTTEXT);  
  4.  
  5. if (m.matches()) {  
  6.  
  7. int bs = Integer.valueOf(m.group("bytes"), 16);  
  8.  
  9. int c = Integer.valueOf(m.group("char"), 16);  
  10.  
  11. System.out.printf("[%x] -> [%04x]%n", bs, c);  
  12.  
  13. }  
  14.  
  15. String pStr = "0x(?\\p{XDigit}{1,4})\\s++u\\+(?\\p{XDigit}{4})(?:\\s++)?";  
  16.  
  17. Matcher m = Pattern.compile(pStr).matcher(INPUTTEXT);  
  18.  
  19. if (m.matches()) {  
  20.  
  21. int bs = Integer.valueOf(m.group("bytes"), 16);  
  22.  
  23. int c = Integer.valueOf(m.group("char"), 16);  
  24.  
  25. System.out.printf("[%x] -> [%04x]%n", bs, c);  
  26.  

或者

 
 
 
  1. System.out.println("0x1234 u+5678".replaceFirst(pStr, "u+$ 0x$")); 

在JDK7 b50中實(shí)現(xiàn)正則表達(dá)式命名捕獲組之后怎么樣呢?是不是眼睛一亮呢?

【編輯推薦】

  1. 實(shí)現(xiàn)Java中對(duì)象比較的兩個(gè)方法
  2. 初學(xué)Java多線程:使用Synchronized塊同步方法
  3. 初學(xué)Java多線程:從線程返回?cái)?shù)據(jù)的兩種方法
  4. Java中兩個(gè)特殊變量this和super 的使用
  5. 3.6.3 this關(guān)鍵字和構(gòu)造方法的調(diào)用

分享標(biāo)題:在JDK7 b50中將實(shí)現(xiàn)正則表達(dá)式命名捕獲組
文章源于:http://www.dlmjj.cn/article/ccejiic.html