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]{3}b。100到99999之間的數字匹配值{2,4}b。請注意使用的術語限制。

重複中使用的元字元

字元 含義 示例
?

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

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

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}表示重複2到4次的字母'a',a{2,}表示至少重複兩次且沒有上限的字母'a'。請注意,{}內不能有空格,並且下限和上限的值沒有上限。所有重複表示式都引用最短可能的先前子表示式:單個字元;字元集或用()分組的子表示式。

更新於:2022年11月23日

瀏覽量:1K+

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告