正規表示式括號的使用

2021-10-02 03:31:46 字數 1304 閱讀 3485

正規表示式括號的使用

1 分組

上一章提到過的量詞只針對緊鄰的字元(組)起作用,例如html語言中的標籤

匹配:][\s\s]+?

其中忽略優先量詞+?,只對緊鄰的字元組[\s\s]起作用,如果需要對之前所有的部分起作用就需要用到圓括號(),寫成:

(][\s\s])+?

起到了將][\s\s]看做乙個整體的作用,即分組。

2 多選結構

括號的第二個作用就是製造出乙個多選結構,兩個或以上個表示式中都是合法匹配的表示式(適用多種情況時),多選結構的形式是(…|…),用豎線|分割子表示式,這些子表示式也叫多選分支,多選分支可以有好多個,只要有1個分支匹配成功即宣告匹配成功,否則匹配失敗,可以模擬c語言中的switch-case結構,失敗就走default下的**。

3 pattern

pattern對應正規表示式物件,如何把乙個字串變成程式可以識別的正規表示式?這就需要用到pattern的方法compile():

pattern pattern = pattern.compile(string regex);

regex 是提前編輯好的正規表示式字串。這樣編譯好的正規表示式可以為接下來的切分或者匹配操作鋪墊。

4 matcher

matcher可以理解為「某次匹配的結果物件」。就是把編譯過的pattern物件應用到某個string物件(下面的例子使用text表示),產生的matcher物件結果。例如:

pattern pattern = pattern.compile(string regex);

matcher matcher = pattern.matcher(string text);

那麼如何獲取到匹配成功的結果呢?matcher物件呼叫方法find(),返回true就表示找到乙個匹配,反之false就是沒找到。進一步地如果想要得到匹配的內容呢?

為了解決這個問題,就先切到括號的下乙個使用方法。

5 引用分組

在使用括號之後,正規表示式會儲存每個分組真正匹配的字串。這種功能叫做捕獲分組,括號叫做捕獲型括號。那麼如何根據個人的意願選擇輸出某乙個分組,或者某幾個分組?

答案是,使用編號,從表示式最左邊的左括號編號記為1,這一對左右括號之間的部分為分組1,例如:

表示式:((\d)-(\d)-(\d))

1號分組:(\d)-(\d)-(\d)

2號分組:\d

3號分組:\d

4號分組:\d

matcher物件可以呼叫group(int i)方法,獲取相應的分組,其中i是分組編號,0號分組是表示整個表示式所捕獲的分組:

while(matcher.find())

正規表示式 括號

用字元組和量詞可以匹配引號字串,也可以匹配 html tag,如果需要用正規表示式匹配身份證號碼,依靠字元組和量詞能不能做到呢?身份證號碼是乙個長度為15或18個字元的字串,如果是15位,則全部由數字組成,首位不能為0 如果是18位,則前17位全部是數字,末位可能是數字,也可能是x。規則非常明確,可...

python正規表示式括號問題

正規表示式中的圓括號 的作用是對字元或元字元分組。我錯把它的作用認為是將圓括號內的字元看成乙個整體。儘管在一些正則測試 上,進行匹配時,把括號內的字元看成乙個整體來匹配也能匹配到想要的結果。測試 如 regex101等 然而在在寫python程式的時候,會出現不是我想要的結果。如果正規表示式中多出使...

python正規表示式及使用正規表示式的例子

正規表示式 正則表達用來匹配字串 正規表示式匹配過程 正規表示式語法規則 匹配除換行 n 外的任意字串 abcabc 轉義字元,使後乙個字元改變原來的意思 a c a c 字符集,對應的位置可以是字符集中任意字元,字符集中的字元可以逐個列出,也可以給出範圍,如 abc 或 a c 第乙個字元如果是 ...