亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

忻城县| 游戏| 竹北市| 防城港市| 娄烦县| 辛集市| 襄垣县| 德令哈市| 西乡县| 永城市| 宁海县| 榆社县| 夹江县| 长子县| 沁阳市| 南和县| 茂名市| 元谋县| 望奎县| 宜都市| 榆林市| 吐鲁番市| 黄梅县| 柳州市| 安宁市| 巩留县| 乌鲁木齐市| 衡山县| 延津县| 天台县| 新野县| 蛟河市| 乌审旗| 阿克苏市| 天气| 东辽县| 泊头市| 南开区| 榕江县| 平果县| 邢台市|