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 協議》,轉載必須註明作者和本文連結