天天看點

Python基礎 - 10正則與re

Python基礎 - 10正則與re

正規表達式是對字元串操作的一種邏輯公式,用事先定義好的一些特定字元、及特定字元的組合,組成一個"規則字元串"。 

Regular Expression     普通字元(如a到z之間的字母)  特殊字元(元字元)

\A: 表示從字元串的開始處比對。

\Z: 表示從字元串的結束處比對,如果存在換行,隻比對換行前的結束字元串。

\b: 比對一個單詞邊界,也就是單詞和空格間的位置。 如 'py\b' 可以比對 "python" 的py,不能比對 "openpyxl"的py。

\B: 比對非單詞邊界。  'py\b' 可以比對 "openpyxl"的py,不能比對 "python" 的py。

\d: 比對任意數字。 等價于 [0-9]。

\D: 比對任意非數字字元。 等價于 [^\d]。

\s: 比對任意空白字元。 等價于 [\t\n\r\f]。

\S: 比對任意非空白字元。 等價于 [^\s]。

\w: 比對任意字母數字及下劃線, 等價于 [0-9a-zA-Z_]。

\W: 比對任意非字母數字及下劃線, 等價于 [^\w]。

\\: 比對原義的反斜杠\。

量詞:

re*:     比對 0個 或 多個表達式

re+:     比對 1個 或 多個表達式

re?:     比對 0個 或 1個前面的正規表達式。

re{m}:   比對 m個前面的正規表達式。

re{m,}:  比對 m個或多個前面的正規表達式。

re{m,n}: 比對 m到n個前面的正規表達式。

非貪婪模式:  *?   +?  ??  {m,n}?

^: 比對字元串的開頭。

$: 比對字元串的結尾。

.: 比對任意字元,除了換行符,當re.DOTALL标記被指定時,則可以比對包括換行符的任意字元。

[...]:  用來表示一組字元, 單獨列出。 如[amk] 比對 'a','m'或'k'

(re): 比對括号内的表達式, 也表示一個組

a|b: 比對a 或 b

  

findall 比對整個字元串,找到一個繼續向下找,直到字元串結尾

Python中數量詞預設是貪婪的,總是嘗試比對盡可能多的字元。非貪婪嘗試比對盡可能少的字元。

在 "*","?","+","{m,n}"後面加上?,使貪婪變成非貪婪。