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