python 正規表示式

2021-10-06 12:23:44 字數 3472 閱讀 3745

元字元

**說明

.匹配除換行符以外的任意字元

\w匹配字元、數字、下劃線或漢字

\w匹配除字母、數字、下劃線或漢字以外的字元

\s匹配單個的空白符(包括健和換行健)

\s除單個的空白符(包括健和換行健)以外的所有字元

\d匹配數字

\b匹配單詞的開始或結束,單詞的分解符通常是空格、標點符號或換行

^匹配字串的開始

$匹配字串的結束

#### 限定符

限定符說明舉例?

匹配前面的字元零次或一次

colou?r,該表示式可以匹配colour和color

+匹配前面的字元一次或多次

go+gle,該表示式可以匹配的範圍從gogle到goo…gle

*匹配前面的字元零次或多次

go*gle,該表示式可以匹配的範圍從ggle到goo…gle

匹配前面的字元n次

gogle,該表示式值匹配google

匹配前面的字元最少n次

gogle,該表示式範圍從google到goo…gle

匹配前面的字元最少n次,最多m次

employe,該表示式從employ到employee

#18位的身份證號碼

(^\d$)|(

^\d)

(\d|x|x)$

匹配自定義字元:[aeiouaeiou]

匹配漢字:[\u4e00-\u9fa5]

匹配連續多個漢字:[\u4e00-\u9fa5]+

排除符:[^a-za-z]

**math():**用於在字串開始處進行匹配

#pattern:表示模式字串,由要匹配的正規表示式轉換而來

#string:表示要匹配的字串

#flags:可選引數,表示標誌位,用於控制匹配方式,如是否區分字母大小寫等

re.match(pattern,string,

[falgs]

)

import re

pattern=r'mr_\w+'

#模式字串

string=

'mr_shop mr_shop'

#要匹配的字串

math=re.match(pattern,string,re.i)

#匹配字串,不區分大小寫

print

("匹配值的起始位置:"

,math.start())

print

("匹配值的結束位置:"

,math.end())

print

("匹配位置的元組:"

,math.span())

print

("要匹配的字串:"

,math.string)

print

("匹配資料:"

,math.group(

))

結果如下

匹配值的起始位置: 0

匹配值的結束位置: 7

匹配位置的元組:(0

,7)要匹配的字串: mr_shop mr_shop

匹配資料: mr_shop

**search():**在整個字串中搜尋第乙個匹配的值

re.search(pattern,string,

[falgs]

)

import re

***=r'\d'

sss=

"2222sdfsf1232"

math=re.search(***,sss)

.group(

)print

(math)

#結果2222

**findall()?*在整個字串中搜尋所有符合正規表示式的字串,並以列表形式返回。

re.search(pattern,string,

[falgs]

)

import re

***=r'\d'

sss=

"2222sdfsf1232"

math=re.findall(***,sss)

print

(math)

#結果[

'2222'

,'1232'

]

()分組

在findall()時,優先得到的分組中的結果

返回字串中所有非重疊匹配的列表。

如果模式中存在乙個或多個捕獲組,則返回乙個組列表;如果模式有多個組,這將是乙個元組列表。

結果中包含空匹配項。

import re

***=r'[1-9](\.[1-9])'

#將(\.[1-9])為一組

sss=

"129.11.2.3 129.33.22.11"

math=re.findall(***,sss)

print

(math)

#輸出[

'.3'

,'.11'

]

import re

***=r'([1-9](\.[1-9]))'

#將整體為一組

sss=

"129.11.2.3 129.33.22.11"

math=re.findall(***,sss)

print

(math)

#輸出[

('129.11.2.3'

,'.3'),

('129.33.22.11'

,'.11'

)]

字串替換
#pattern:表示模式字串,由要匹配的正規表示式轉換而來

#repl:表示要替換的字串

#string:表示要被查詢的原始字串

#count:可選引數,表示模式匹配後的最大次數,預設值為0,表示替換所有匹配

#flags:可選引數,表示標誌位,用於控制匹配方式,如是否區分字母大小寫等

re.sub(pattern,rel,string,count,flags)

import re

pattern=r'1[34578]\d'

string=

'中獎號碼為:84978981 聯絡**為:13611111111'

result=re.sub(pattern,

'1××××××××××'

,string)

print

(result)

#結果中獎號碼為:84978981 聯絡**為:1××××××××××

python正規表示式元字元 正規表示式

字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

Python 正規表示式

1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...

Python正規表示式

學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...