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}"後面加上?,使貪婪變成非貪婪。