一、方法
1. re.match函數
2. re.search方法
3. re.sub函數
- 用於替換字符串的匹配項
re.sub(pattern, repl, string, count=0, flags=0)
參數說明:(前三個爲必選參數)
parameter |
description |
pattern |
匹配的正則表達式 |
repl |
替換的字符串,也可以是一個函數 |
strings |
要匹配的字符串 |
count |
模式匹配後替換的最大次數,默認0表示替換所有 |
flags |
標誌位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。 |
4. re.complie函數
5. re.findall函數
6. re.finditer函數
- 在字符串中找到正則表達式所有匹配的所有子串,並把它們作爲一個迭代器返回
re.finditer(pattern, string, flags=0)
參數說明:
parameter |
description |
pattern |
匹配的正則表達式 |
strings |
要匹配的字符串 |
flags |
標誌位,用於控制正則表達式的匹配方式,如:是否區分大小寫,多行匹配等等。 |
import re
it = re.finditer(r'\d+', '32n53nk64kj24n')
for match in it:
print(match.group())
輸出結果: 32
53
64
24
7. re.split函數
8. 正則表達式修飾符
parameter | description
---|---
re.I | 忽略大小寫
re.L | 表示特殊字符集\w,\W,\b,\B,\s,\S依賴於當前環境
re.S | 即爲'.'並且包括換行符在內的任意字符('.'不包括換行符)
re.U | 表示特殊字符集\w,\W,\b,\B,\d,\D,\s,\S依賴於 Unicode 字符屬性數據庫
re.X | 爲了增加可讀性,忽略空格和'#'後面的註釋
二、匹配規則
pattern |
description |
^ |
匹配字符串的開頭 |
$ |
匹配字符串的末尾 |
. |
匹配任意字符串,除換行符,當指定。re.DOTALL標記被指定時,則可以匹配包括換行符的任意字符 |
[…] |
用來表示一組字符,單獨列出:[amk]匹配 ‘a’, ‘m’或’k’ |
[^…] |
不在[]中的字符:[^abc]匹配除了a,b,c之外的字符 |
re* |
匹配0個或多個的表達式 |
re+ |
匹配1個或多個的表達式 |
re? |
匹配0個或1個由前面的正則表達式的片段,非貪婪模式 |
re{n} |
匹配n個前面表達式。例如,'o{2}‘不能匹配 ‘Bob’中的’o’,但是能匹配’food’中的兩個’o’ |
re{n,} |
精確匹配n個前面表達式。例如:'o{2,}'不能匹配 ‘Bob’中的’o’,但是能匹配’fooooood’中的所有o。"o{1,}“等價於"o+”。"o{0,}“則等價於"o*” |
re{n,m} |
匹配n到m次由前面的正則表達式的片段,貪婪方式 |
a | b |
匹配a或b |
(re) |
匹配括號內的表達式,也表示一個組 |
(?imx) |
正則表達式包含三種可選標誌:i, m, 或 x 。隻影響括號中的區域。 |
(?-imx) |
正則表達式關閉 i, m, 或 x 可選標誌。隻影響括號中的區域。 |
(?:re) |
類似(…)但是不表示一個組 |
(?imx: re) |
在括號中使用i,m或x可選標誌 |
(?-imx: re) |
在括號中不使用i,m,或x可選標誌 |
(?#…) |
註釋 |
(?=re) |
前向肯定界定符。如果所含正則表達式,以 … 表示,在當前位置成功匹配時成功,否則失敗。但一旦所含表達式已經嘗試,匹配引擎根本沒有提高;模式的剩餘部分還要嘗試界定符的右邊。 |
(?!re) |
前向否定界符。於肯定定符相反;當所含表達式不能在字符串當前位置匹配時成功 |
\w |
匹配數字字母下劃線 |
\W |
匹配非數字字母下劃線 |
\s |
匹配任意空白字符,等價於[\n\t\r\f] |
\S |
匹配任意非空字符 |
\d |
匹配任意數字,等價於[0-9] |
\D |
匹配非數字 |
\A |
匹配字符串開始 |
\Z |
匹配字符串結束,如果存在換行,只匹配到換行前的結束字符串 |
\z |
匹配字符串結束 |
\G |
匹配最後匹配完的位置 |
\b |
匹配一個單詞邊界,也就是指單詞和空格間的位置。例如: ‘er\b’ 可以匹配"never" 中的 ‘er’,但不能匹配 “verb” 中的 ‘er’ |
\B |
匹配非單詞邊界。‘er\B’ 能匹配 “verb” 中的 ‘er’,但不能匹配 “never” 中的 ‘er’ |
\n,\t |
匹配一個換行符。匹配一個製表符等 |
\1…\9 |
匹配一個換行符。匹配一個製表符等 |
\10 |
匹配第n個分組的內容,如果它經匹配。否則指的是八進制字符碼的表達式 |