正則表達式小括號的作用


1.正則表達式中的圓括號的作用是對字符進行分組,並保存匹配的文本。

2.圓括號用法I:對字符或元字符進行分組,這樣在圓括號內就可以對字符組合使用限定符。

    eg. 匹配A+一個數字+A+一個數字:(A\d){2}

3.圓括號用法II:表示可選擇性。

    3.1 從兩個直接量中選擇一個

       eg. gr(a|e)y匹配gray和grey,該例子還可以使用gr[ae]y,字符類效率更高。

    3.2 從多個直接量中選擇

       eg. (Doctor|Dr\.?)匹配Doctor,Dr,Dr.三種情況

    3.3 錯誤匹配的交替行為,

       使用交替行為時,有時會出現意想不到的錯誤。

       eg. 用(a|ab)匹配ab時,只能匹配a,但是如果用(ab|a),則可以匹配ab

4.捕獲圓括號:正則表達式中,與位於圓括號之間的模式匹配的內容都會被捕獲。

    4.1 當模式中有嵌套的圓括號時,變量的編號會按照圓開括號出現的位置一次進行。

    eg. ([A-Za-z](\d{2}))((-)\d{2})匹配”A22-33”時,匹配情況如下:

Group 1:   A22

Group 2:   22

Group 3:   -33

Group 4:   -

    4.2 .NET中,可以創建命名的組,語法為:

       (?<組名>模式)或(?’組名’模式)

       eg. (?<FirstLetter>\w(?'Num'\d{2}))((-)\d{2})匹配” A22-33”情況為:

        Group "FirstLetter": A22

Group "Num":  22

Group 1:   -33

Group 2:   -

    4.3 非捕獲的圓括號:.NET和JavaScript都提供了非捕獲圓括號的功能,即圓括號的內容不作為捕獲對象,當圓括號中的內容不是想捕獲的對象時,采用非捕獲圓括號可以提高匹配效率。語法為:

       (?:the-non-captured-content)

       eg. (\w(?:\d{2}))((?:-)\d{2})匹配” A22-33”情況如下:

        Group 1:   A22

Group 2:   -33

注:\d{2}匹配的”22”沒有被捕獲

5.反向引用(backreferences)

    語法:.NET和javascript中,表示匹配第一組的變量被指定為”\1”

    能夠體現反向引用的便利性的一種情況是找到句子中重復的單詞。

    eg. 查找下列句子中重復的單詞:

I think that that is often overdone.

This sentence contains contains a doubled word or two two.

我們用([A-Za-z]+) +\1\b來匹配,紅色部分為匹配的結果

       在這個匹配模式中([A-Za-z]+)為匹配的第一組變量,后面加一個或多個空格( +)表示單詞間隔,

       然后用”\1”來表示第一組匹配的變量(即[A-Za-z]+匹配的內容),最后一個表示單詞的結束(\b)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM