中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中如何使用正則表達式中的組

發布時間:2021-11-20 13:43:29 來源:億速云 閱讀:256 作者:小新 欄目:編程語言

這篇文章主要介紹java中如何使用正則表達式中的組,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

組是括號劃分的正則表達式,可以根據組的編號來引用某個組。組號為0表示整個表達式,組號1表示從左到右被第一個括號擴起的組,以此類推。

例如:

A(B(CD))E中有三個組:組0是ABCDE,組1是BCD,組2是CD。

Matcher對象提供了一系列方法,用以獲取與組相關的信息:

方法作用

public int groupCount()返回該匹配器的模式中的分組數目,第0組不包括在內
public String group()返回前一次匹配操作的第0組(整個匹配)
public String group(int i)返回在前一次匹配操作期間的指定的組號
public int start(int group)返回在前一次匹配操作中尋找到的組的起始索引
public int end(int group)返回在前一次匹配操作中尋找到的組的最后一個字符索引加一的值

例子:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GroupsDemo {
    static public final String POEM="Twas brilling, and the slithy toves\n"
    + "Did gyre and gimble in the wabe.\n"
    + "All mimsy were the borogoves,\n"
    + "And the mome raths outgrabe.\n";
    
public static void main(String[] args) {
/*
 * Patten.MULTILINE為模式標記,表示多行模式,在多行模式下,表達式^和$分別匹配一行的開始和結束,也可以匹配輸入字符串的開始和結束
 * \S+表示一次以上的非空格字符,s+表示一次以上的空格字符,目的匹配每行的最后3個字符。
 */
Matcher m=Pattern.compile("(\\S+)\\s+((\\S+)\\s+(\\S+))$",Pattern.MULTILINE).matcher(POEM);
while (m.find()) {
             for (int i = 0; i <=m.groupCount(); i++) {
             System.out.print("第"+i+"組是:"+"["+m.group(i)+"]   ");
}
         System.out.println();
}
         
}
}

運行結果:

第0組是:[the slithy toves]   第1組是:[the]   第2組是:[slithy toves]   第3組是:[slithy]   第4組是:[toves]   
第0組是:[in the wabe.]   第1組是:[in]   第2組是:[the wabe.]   第3組是:[the]   第4組是:[wabe.]   
第0組是:[were the borogoves,]   第1組是:[were]   第2組是:[the borogoves,]   第3組是:[the]   第4組是:[borogoves,]   
第0組是:[mome raths outgrabe.]   第1組是:[mome]   第2組是:[raths outgrabe.]   第3組是:[raths]   第4組是:[outgrabe.]

start()和end()的使用:

在匹配操作成功之后,start()返回先前匹配的起始位置的索引,而end()返回所匹配的最后字符的索引加一的值。如果匹配操作失敗后(或先于一個正在進行的匹配操作去操作)調用start()或end()將會產生IllegalStateException.

下面是使用例子:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GroupsDemo {
    static public final String POEM="Twas brilling, and the slithy toves\n"
    + "Did gyre and gimble in the wabe.\n"
    + "All mimsy were the borogoves,\n";
    
public static void main(String[] args) {
/*
 * Patten.MULTILINE為模式標記,表示多行模式,在多行模式下,表達式^和$分別匹配一行的開始和結束,也可以匹配輸入字符串的開始和結束
 * \S+表示一次以上的非空格字符,s+表示一次以上的空格字符,目的匹配每行的最后3個字符。
 */
Matcher m=Pattern.compile("(\\S+)\\s+((\\S+)\\s+(\\S+))$",Pattern.MULTILINE).matcher(POEM);
while (m.find()) {
           System.out.print("起始索引為:"+m.start());
           System.out.println("結束索引為:"+m.end());
           
             for (int i = 0; i <=m.groupCount(); i++) {
             System.out.print("第"+i+"組是:"+"["+m.group(i)+"]   ");
                System.out.print("該組的起始索引為:"+m.start(i));
                System.out.println("該組的結束索引為:"+m.end(i));
}
         System.out.println();
}
         
}
}

運行結果:

起始索引為:19結束索引為:35
第0組是:[the slithy toves]   該組的起始索引為:19該組的結束索引為:35
第1組是:[the]   該組的起始索引為:19該組的結束索引為:22
第2組是:[slithy toves]   該組的起始索引為:23該組的結束索引為:35
第3組是:[slithy]   該組的起始索引為:23該組的結束索引為:29
第4組是:[toves]   該組的起始索引為:30該組的結束索引為:35
起始索引為:56結束索引為:68
第0組是:[in the wabe.]   該組的起始索引為:56該組的結束索引為:68
第1組是:[in]   該組的起始索引為:56該組的結束索引為:58
第2組是:[the wabe.]   該組的起始索引為:59該組的結束索引為:68
第3組是:[the]   該組的起始索引為:59該組的結束索引為:62
第4組是:[wabe.]   該組的起始索引為:63該組的結束索引為:68
起始索引為:79結束索引為:98
第0組是:[were the borogoves,]   該組的起始索引為:79該組的結束索引為:98
第1組是:[were]   該組的起始索引為:79該組的結束索引為:83
第2組是:[the borogoves,]   該組的起始索引為:84該組的結束索引為:98
第3組是:[the]   該組的起始索引為:84該組的結束索引為:87
第4組是:[borogoves,]   該組的起始索引為:88該組的結束索引為:98

以上是“java中如何使用正則表達式中的組”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

五原县| 惠来县| 江西省| 晋江市| 巴东县| 湘潭市| 萝北县| 青龙| 泌阳县| 辽中县| 宜兰市| 绍兴市| 民丰县| 梅河口市| 甘洛县| 来安县| 岐山县| 闻喜县| 栖霞市| 崇左市| 张家界市| 马公市| 康乐县| 都匀市| 晋宁县| 浦县| 宜黄县| 建德市| 濉溪县| 禄劝| 凤冈县| 渝中区| 土默特左旗| 合肥市| 府谷县| 柘城县| 库车县| 原阳县| 外汇| 灵璧县| 江永县|