Python 中正則表示式重複情況有哪些?


我們可以使用一些特殊字元構建識別重複字元組的正則表示式。以下元字元可用於搜尋重複的字元或字元集。

問號是第一個開發的重複運算子或限定符。它透過指示引擎嘗試匹配前一個標記 0 次或 1 次來有效地使其成為可選的。

引擎被指示透過星號或星號嘗試匹配前一個標記零次或多次。加號指示引擎嘗試匹配前一個標記一次或多次。<[A-Za-z] [A-Za-z0-9]*> 匹配沒有任何屬性的 HTML 標籤。尖括號是字面表示式。第一個字元類對應於一個字母。第二個字元類匹配字母或數字。星號重複第二個字元類。如果第二個字元類不匹配任何內容,這是可以接受的,因為我們使用了星號。因此,這樣的標籤將與我們的正則表示式匹配。

第一個字元類將在匹配時匹配 H。由於使用了星號,第二個字元類將重複三次,並在每一步匹配 T、M 和 L。我也可以選擇使用 [A-Za-z0-9]+。我避免這樣做,因為此正則表示式將匹配無效的 HTML 元素 1>。但是,如果您確定您正在檢視的文字不包含此類無效標籤,則此正則表示式可以足夠。

限制重複

您還可以使用額外的限定符指示標記可以重複多少次。語法是 min,max,其中 min 表示匹配的最小次數(零或正整數),max 表示匹配的最大次數(等於或大於 min 的整數)。如果存在逗號但 max 被省略,則匹配的最大次數是無限的。因此,值 0 和 1 分別等價於 ?、* 和 +。如果省略逗號和 max,則引擎被指示精確重複標記 min 次。

要匹配 1000 到 9999 之間的數字,請使用表示式 b[1-9][0-9]3b。介於 100 和 99999 之間的數字匹配值 2,4b。請注意使用的術語限制。

重複中使用的元字元

字元 含義 示例
?

這意味著前一個字元的零個或一個。

注意那裡的零部分,因為如果您不小心,它可能會讓您陷入困境。

pythonl?y 匹配

pythony

pythonly

* 查詢前一個字元的零個或多個。

pythonl*y 匹配

以上兩者加上

pythonlly,

pythonllly,等等

+ 查詢前一個字元的一個或多個。

pythonl+y 匹配

pythonly,

pythonlly,

pythonllly,等等

{n,m} 查詢前一個字元的 n 到 m 次重複。

fo{1,2} 匹配

fo 或

foo

所有這些重複字元都可以用來描述字元組。因此

>>> import re # Python 的正則表示式模組 - 所有示例中都隱式匯入

>>> re.match('(.an){1,2}s', 'cans')

<re.MatchObject instance at 862760>

相同的模式也將匹配 'cancans' 或 'pans' 或 'canpans',但不匹配 'bananas'。

示例

以下程式碼回答了上述問題

#importing re import re #storing a string s = "sheeeeeeeeple" print("Give String -",s) #searching for the repetitive words match = re.search(r"he+", s) #printing the matched groups of letters together print ("Latest String-",match.group())

輸出

Give String - sheeeeeeeeple
Latest String- heeeeeeee

程式碼解釋

首先,我們從正則表示式模組匯入 re。然後我們將字串 sheeeeeeeeple 儲存在變數 s 中。透過使用 search 方法,我們在字串 s 中搜索“e”的重複,並將其儲存在變數 match 中。然後透過使用 group 方法,我們列印匹配的單詞。

示例 2

以下程式碼回答了上述問題

#importing re import re #storing a string s = "tutoriallllllllsPoint" print('Give String-',s) #searching for the repetitive words match = re.search(r"al+", s) #printing the matched groups of letters together print ("Lates string -",match.group())

輸出

Give String- tutoriallllllllsPoint
Lates string - allllllll

程式碼解釋

首先,我們從正則表示式模組匯入 re。然後我們將字串 sheeeeeeeeple 儲存在變數 s 中。使用 search 方法,我們在字串 s 中搜索“l”的重複,並將其儲存在變數 match 中。然後透過使用 group 方法,我們列印匹配的單詞。

結論

無論重複多少次,都被稱為重複的表示式。任何次數(包括 0)都可以在 '*' 之後重複表示式。任何次數,但至少一次,都可以重複 '+' 後面的表示式。

‘?’ 後面的表示式可以重複零次或一次。當需要明確指定最小值和最大重複次數時,可以使用邊界運算子 {}。因此,a{2} 是字母 'a' 精確重複兩次,a{2,4} 表示字母 'a' 重複 2 到 4 次,a{2,} 表示字母 'a' 至少重複兩次,沒有上限。請注意,{} 內部不能有空格,並且下限和上限的值沒有上限。所有重複表示式都引用最短的可能的先前子表示式:單個字元;字元集或用 () 分組的子表示式

更新於: 2022-11-23

1K+ 閱讀量

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告

© . All rights reserved.