Python 基礎筆記——正則

codelife發表於2019-08-26

import re

元字元:

符號 描述
. 萬用字元,匹配除換行符外的所有字元,一次只能匹配一個字元
^ 匹配的字元必須在字串開頭
$ 匹配的字元必須在字串結尾
* 匹配 * 前面的字元0或多次
+ 匹配 + 前面的字元1或多次
? 匹配?前面的字元0或1次
{} 匹配{m,n}前面的字元m-n次
[] 匹配 [] 中的某一個字元。在[]中,.(萬用字元)將失去作用,^在[]裡使用代表取反,反斜槓在[]中仍有特殊作用
\ 反斜槓後面跟元字元去除元字元特殊功能,後面跟普通字元實現特殊功能
\d 匹配任何 一個十進位制數,相當於[0-9]
\D 匹配任意一個非數字字元,相當於[^0-9]
\s 匹配一個空白字元,等價於[\t\n\r\f\v]
\S 匹配一個非空白字元,等價於[^\t\n\r\f\v]
\w 匹配任意一個字母數字或下劃線,等價於[a-zA-Z0-9_]
\W 匹配除字母數字或下劃線外的任意一個字元,等價於[^a-zA-Z0-9_]
\b 匹配一個單詞的邊界,在需要匹配的單詞兩邊放入\b

re模組中一些重要函式

函式 描述
compile(patern[, flags]) 根據包含正規表示式的字串穿件模式物件
search(pattern, string[, flags]) 在字串中尋找模式
match(pattern, string[, flags]) 在字串的開始處匹配模式
split(pattern, string[, maxsplit=0]) 根據模式的匹配項來分割字串
findall(pattern, string) 列出字串中模式的所有匹配項
sub(pattern, replace, string[, count=0]) 將字串中所有pattern的匹配項用replace替換
secape(string) 將字串中所有特殊正規表示式字元轉義

1、re.findall(pattern,string):查詢匹配項,返回包含所有匹配項的列表,沒有匹配項返回空列表。注:如果匹配項裡有組,則會優先取出組裡的匹配項,如果想取出完整匹配項則在組的開始加上?:(問號和冒號)

2、re.match(pattern,string[,flags]):從字串開頭進行匹配,成功返回Match物件,失敗返回None

3、re.search(pattern,string[,flags]):在string中匹配pattern,成功返回Match物件,失敗返回None,只返回第一個

注:flags預設為0,其它可選項:

re.I(大寫i) 使匹配對大小寫不敏感

re.M 多行匹配,影響 ^ 和 $

re.S 使 .(萬用字元)匹配包括換行符在內的所有字元

4、re.sub(pat,repl,string[count=0]):將字串中所有pat的匹配項用repl替換,count引數代表替換次數

5、re.subn(pat,repl,string[count=0]):和sub()功能一樣,不同的是此函式返回被替換次數

6、re.split(pattern,string[, maxsplit=0]):根據匹配項分割字串,返回列表

7、re匹配物件的方法:


>>> r = re.match(r'to\b\s(be)\b', s)

>>> r.group()

'to be'

>>> r.groups()

('be',)

>>> r = re.match(r'to\b\s(?P<key>be)\b', s)

>>> r.groupdict()

{'key': 'be'}

group([group1,...]) 返回匹配到的字串

groups() 返回匹配到的分組結果,以元組形式返回

groupdict() 以匹配到的分組結果作為值,以指定key作為鍵,以字典形式返回

start([group]) 返回給定組匹配項的開始索引(預設為0)

end([group]) 返回給定組匹配項的結束索引加1

span([group]) 以元組形式返回一個組的start和end

8、re.finditer():匹配成功返回迭代器物件,可在for迴圈中使用group()等re匹配物件方法

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章