正則表達(dá)式是定義搜索模式的字符序列。通常這種模式被字符串搜索算法用于字符串上的“查找”或“查找和替換”操作,或者用于輸入驗(yàn)證。
1. 正則表達(dá)式的語法
. 表示任何單個字符
[] 字符集,對單個字符給出取值范圍
[^] 非字符集,對單個字符給出排除范圍
*前一個字符0次或者無限次擴(kuò)展
+前一個字符1次或無限次擴(kuò)展
?前一個字符0次或1次擴(kuò)展
|左右表達(dá)式任意一個
{m}擴(kuò)展前一個字符m次
{m,n}擴(kuò)展前一個字符m至n次
^匹配字符串開頭
$匹配字符串結(jié)尾
()分組標(biāo)記,內(nèi)部只能使用|操作符
d數(shù)字,等價于[0-9]
w單詞字符,等價于[A-Z,a-z,0-9]
2. python中re庫的使用
Re庫是python的標(biāo)準(zhǔn)庫,主要用于字符串匹配,調(diào)用方法:import re
2.1. 正則表達(dá)式字符串的類型
re庫采用raw string類型來表示正則表達(dá)式,表示為
r'text'
raw string是不包含對轉(zhuǎn)義符的再次轉(zhuǎn)義的字符串,總而言就是string會對字符轉(zhuǎn)義,而raw string不會,因?yàn)樵谡齽t表達(dá)中會出現(xiàn)轉(zhuǎn)義符號,所以避免繁瑣我們使用raw string
2.2. Re庫主要功能函數(shù)
re.search()在一個字符串中搜索正則表達(dá)式的第一個位置,返回match對象
re.match()從一個字符串的開始位置起匹配正則表達(dá)式,返回match對象
re.findall()搜索字符串,以列表類型返回全部能匹配的子串
re.split()將一個字符串按照正則表達(dá)式匹配結(jié)果進(jìn)行分割,返回列表類型
re.finditer()搜索字符串,返回一個匹配結(jié)果的迭代類型,每個迭代元素是match對象
re.sub()在一個字符串中替換所有匹配正則表達(dá)式的子串,返回替換后的字符串
2.2.1. re.search(pattern, string, flags=0)
在一個字符串中搜索正則表達(dá)式的第一個位置,返回match對象
pattern : 正則表達(dá)式的字符串或原生字符串表示
string : 待匹配字符串
flags : 正則表達(dá)式使用時的控制標(biāo)記
re.I re.IGNORECASE 忽略正則表達(dá)式的大小寫,[A‐Z]能夠匹配小寫字符
re.M re.MULTILINE 正則表達(dá)式中的^操作符能夠?qū)⒔o定字符串的每行當(dāng)作匹配開始
re.S re.DOTALL 正則表達(dá)式中的.操作符能夠匹配所有字符,默認(rèn)匹配除換行外的所有字符
舉例說明:
import rematch = re.search(r'[1-9]/d{5}', 'BIT 100081')if match: print(match.group(0)) 結(jié)果為1000812.2.2. re.match(pattern, string, flags=0)
從一個字符串的開始位置起匹配正則表達(dá)式,返回match對象
參數(shù)同search函數(shù)
舉例說明:
import rematch = re.match(r'[1-9]/d{5}', 'BIT 100081')print(match.group(0)) 結(jié)果會報錯,match為空,因?yàn)閙atch函數(shù)是從字符串開始位置開始匹配,因?yàn)閺拈_始位置沒有匹配到,所以為空
新聞熱點(diǎn)
疑難解答
圖片精選