Python:正則表達式-4

讀書筆記,原文來自FishC

1)有些字符他們不匹配任何字符,只是簡單表示成功與失敗,稱之爲零寬斷言。如\b表示當前位置位於一個單詞的邊界,但\b並不能改變位置。

2)|:對兩個正則表達式進行或操作,如果A和B是正則表達式,A|B會匹配A或B中出現的任何字符;|的優先級比較低;如Fish|C應該匹配Fish或C,而不是匹配Fis,然後一個h或C;

同樣,使用\|來匹配'|'本身;或者包含在一個字符類中,如[|];

3)^:匹配字符的起始位置,如果設置了MULTILINE標誌,就會變成匹配每一行的起始位置;在MULTILINE中,每當遇到換行符就會立刻進行匹配。

4)$:匹配字符串的結束位置,每當遇到換行符也會離開進行匹配;同樣,使用\$來匹配'$'字符本身,或者包含在一個字符類中,如[$];

5)\A:只匹配字符串的起始位置;如設置MULTILINE時,功能同^,但\A還是匹配字符串的起始位置,^對字符串的每一行都進行匹配;

6)\Z:只匹配字符串的結束位置;

7)\b:單詞邊界,只匹配單詞的開始和結尾的零寬斷言。使用r'\bclass\b',如class只有在出現一個完整的單詞class時才匹配;如果出現在別的單詞中,則不會匹配;

8)\B:另外一個零寬斷言,與\b的含義相反,\B表示非單詞邊界的位置;


分組

對於比較複雜的內容,正則表達式通常使用分組的方式分別對不同的內容進行匹配。

在正則表達式中,使用元字符()來劃分組。()元字符跟數學表達式中的小括號含義差不多,將包含的內部的表達式組合在一起,如(ab)*會匹配零個或者多個ab;

使用()表示的子組我們可以對它進行按層次索引,可以將索引值作爲參數傳遞給這些方法:group,start,end,span;

按作者小甲魚解釋,有幾對小括號就是分成了幾個子組(多直白啊);

子組的索引值從左到右進行編號,子組也容忍嵌套;

start()獲得參數子組的開始位置;end()獲得參數子組的結束位置;span()獲得對應子組的範圍;

可以通過groups()方法一次性返回所有的子組匹配的字符串;

反向引用:可以在後面的位置使用先前匹配過的內容,用法是反斜槓加上數字,如\1表示引用前邊成功匹配的序號爲1的子組(不明白?);

默認的,反斜槓加數字來表示數字的值對應的ASCII字符,所以反向索引的正則表達式中,依然強調使用原始字符(前面加r)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章