元字元
**說明
.匹配除換行符以外的任意字元
\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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...