Python基礎--正則表示式
正則表示式是處理字串非常有用的工具,學習起來也足夠的蛋疼,為此總結一下正則表示式。Python中提供了re模組對正則表示式操作的功能。下面就瞭解正則表示式的元字元。
一.元字元
1."."
匹配換行符以外的任意單個字元
2."*"
匹配位於*之前的字元0或者多次
3."+"
匹配位於+之前的字元1一次或者多次,也就是貪婪模式
4."-"
在[]中表示範圍
5."|"
匹配位於"|"之前或者之後的字元
6."^"
匹配行首,匹配以"^"後面的字元開頭的字串
7."$"
匹配行尾,匹配以$之前字元結束的字串
8."?"
匹配位於"?"之前的0個或者1個字元,是非貪婪模式
9."\"
轉義字元
10."\f"
匹配換頁符
11."\n"
匹配換行符
12."\r"
匹配回車符
13."\b"
匹配字串頭或者尾
14."\d"
匹配任意數字
15."\D"
匹配非數字
16."\s"
匹配任意空白字元,空格、換行符等
17."\S"
與"\s"相反
18."\w"
匹配任意字母、數字和下劃線
19."\W"
與"\w"相反
20."()"
代表()內是一個整體
21."{}"
按照"{}"內的次數進行匹配,例如:a{1,},匹配1個到多個字元a
22."[]"
匹配在"[]"內的字元
23.[^]
在"[]"內,^代表取反
二、re模組的主要方法
1.compile
建立模式物件,把正則表示式編譯成Pattern例項,並用這個例項處理字串獲得匹配結果,結合下面幾種查詢方法使用。
import re#匯入re模組
str1="acsdvfdbfdbdrsdfdsfvf"
pattern=re.compile(r'\w+d\w+')
print(pattern)
print(type(pattern))
列印的結果
2.search
在整個字串進行查詢,返回一個match物件
import re example="shascddo BBnddd dsDsvBbfvb" pattern=re.compile(r'\bB\w+\b')#編譯正則表示式,匹配B開頭的單詞 res=pattern.search(example)#Pattern的查詢方法 print(res)
返回匹配到的字串索引,一個match物件
3.match
在字串開始處進行匹配,返回一個match物件
把search方法換成match方法
import re
example="shascddo BBnddd dsDsvBbfvb"
pattern=re.compile(r'\bB\w+\b')#編譯正則表示式,匹配B開頭的單詞
res=pattern.match(example)#Pattern的查詢方法
print(res)
返回的是none,因為match是從字串頭開始匹配
pattern=re.compile(r'\bs\w+\b')#匹配s開頭的單詞
結果為:<_sre.SRE_Match object; span=(0, 8), match='shascddo'>
4.findall
找到匹配模式中的所有項
import re
example="shascddo BBnddd dsDsvBbfvb"
pattern=re.compile(r'\bs\w+\b')
res=pattern.findall(example)#換成findall方法
print(res)
匹配結果:['shascddo'],和match方法不同,返回找到的列表,並且是在整個字串中查詢
5.split
根據表示式進行分割
import re
str1="asdcsd.sdvds...sdvs"
pat=re.compile(r'[\.]')#\在這裡是轉義字元,匹配.
pat=pat.split(str1,maxsplit=2)#maxsplit是最多切割次數
print(pat)
maxsplit是可選引數,不填會預設匹配所有的"."進行分割
列印結果:['asdcsd', 'sdvds', '..sdvs']
6.sub
替換字串
import re
str1="sdvdIgdgbs"
pat=re.compile(r'[I]')#找到字元I
str1=pat.sub('i',str1)#替換
print(str1)
列印結果為:sdvdigdgbs
鑑於在學習正則的煩惱,總結一些常用的正則表示式和re的一些方法。參考:《python程式設計》。