python之正規表示式

2022-07-13 05:30:10 字數 3987 閱讀 1505

一、常用的匹配規則總結表

模式描述

\w

匹配字母數字及下劃線

\w

匹配非字母數字及下劃線

\s

匹配任意空白字元,等價於 [\t\n\r\f].

\s

匹配任意非空字元

\d

匹配任意數字,等價於 [0-9]

\d

匹配任意非數字

\a

匹配字串開始

\z

匹配字串結束,如果是存在換行,只匹配到換行前的結束字串

\z

匹配字串結束

\g

匹配最後匹配完成的位置

\n

匹配乙個換行符

\t

匹配乙個製表符

^

匹配字串的開頭

$

匹配字串的末尾

.

匹配任意字元,除了換行符

[...]

用來表示一組字元,單獨列出:[amk] 匹配 'a','m' 或 'k'

[^...]

不在 中的字元:[^abc]匹配除了 a,b,c 之外的字元。

*

匹配 0 個或多個的表示式。

+

匹配 1 個或多個的表示式。

?

匹配 0 個或 1 個由前面的正規表示式定義的片段,非貪婪方式

精確匹配 n 個前面表示式。

匹配 n 到 m 次由前面的正規表示式定義的片段,貪婪方式

a \| b

匹配 a 或 b

( )

匹配括號內的表示式,也表示乙個組

二、re庫中常用方法

函式描述

re.match(pattern, string, flags=0)

嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match()就返回none

re.search(pattern, string, flags=0)

掃瞄整個字串並返回第乙個成功的匹配

re.sub(pattern, repl, string, count=0)

用於替換字串中的匹配項,repl : 替換的字串,也可為乙個函式

re.compile(pattern[, flags])

用於編譯正規表示式,生成乙個正規表示式( pattern )物件,供 match() 和 search() 這兩個函式使用

findall(string[, pos[, endpos]])

在字串中找到正規表示式所匹配的所有子串,並返回乙個列表,如果沒有找到匹配的,則返回空列表

re.split(pattern, string[, maxsplit=0, flags=0])

能夠匹配的子串將字串分割後返回列表

三、修飾符總結

修飾符描述

re.i

使匹配對大小寫不敏感

re.l

做本地化識別(locale-aware)匹配

re.m

多行匹配,影響 ^ 和 $

re.s

使 . 匹配包括換行在內的所有字元

re.u

根據unicode字符集解析字元。這個標誌影響 \w, \w, \b, \b.

re.x

該標誌通過給予你更靈活的格式以便你將正規表示式寫得更易於理解。

四,基礎匹配

'\d' 可以匹配乙個數字,'00\d'可以匹配'007';

'\w' 可以匹配乙個字母或者數字,'00\w'可以匹配'007'或者'00a';

'\s' 可以匹配乙個空格;

'.'可以匹配任意字元;

匹配變長的字元,可以用*表示任意個字元(包括0個),用+表示至少乙個字元,

用?表示0個或者1個字元,用表示n個字元,用表示n-m個字元:

'\d\-\d' → '020-61228080'

高階

要做更精確的匹配,可以用[ ]表示範圍,比加:

[0-9a-za-z\_] 可以匹配乙個數字、字母或者下劃線;

[0-9a-za-z\_]+ 可以匹配至少由乙個數字、字母或者下劃線組成的字串;

[a-za-z\_][0-9a-za-z\_]*可以匹配由字母或下劃線開頭,後接任意個由乙個數字、字母或者下劃線組成的字串,也就是python合法的變數;

[a-za-z\_][0-9a-za-z\_]更精確地限制了變數的長度是1-20個字元(前面1個字元+後面最多19個字元);

a|b可以匹配a或b,所以(p|p)ython可以匹配'python'或者'python';

^表示行的開頭,^\d表示必須以數字開頭;

$表示行的結束,\d$表示必須以數字結束;

re模組

python提供的re模組,包含所有正規表示式的功能。

由於python的字串本身也用\轉義,所以要注意:

s='abc\\-001'  表示正則字串'abc\-001',但使用r字首就不用考慮轉義的問題了,r'abc\-001'。

match()方法判斷是否匹配,匹配成功返回乙個match()物件,否則返回none。常用判斷方法:12

345test='使用者輸入的字串'

ifre.match(r'正規表示式', test):

print('ok')

else:

print('failed')

切割字串

用正規表示式切分字串比用固定的字元更靈活,請看正常的**:12

>>>'a b   c'.split(' ')

['a','b', '', '', 'c']

上述方法無法識別連續的空格,用正規表示式試試:12

>>> re.split(r'\s+','a b   c')

['a','b','c']

Python之正規表示式

正規表示式正規表示式主要用來匹配字串,例如 判斷乙個字串是否是乙個合法的 思想是用描述性的語言給字串乙個規則。re模組中的match函式提供了這種功能,若匹配成功則返回匹配物件,否則返回none。一 語法 d 表示匹配數字 w 表示匹配字母或數字 可以匹配任意字元 s可以匹配乙個空格或者tab 特殊...

Python之正規表示式

正規表示式元字元如下 匹配除換行符以外的所以字元 規定匹配模式必須出現在目標字串的開頭,例如 hell hello hellboy 規定匹配模式必須出現在目標字串的結尾,例如 ar car bar 其前乙個字元必須在目標物件中連續出現零次或多次 其前乙個字元必須在目標物件中連續出現一次或多次 其前乙...

Python之正規表示式

匯入re模組 檢索和替換 re.sub re.sub pattern,repl,string,count 0,flags 0 pattern 正則中的模式字串 repl 替換的字串,也可為乙個函式 string 要被查詢替換的原始字串 count 模式匹配後替換的最大次數,預設 0 表示替換所有的匹...