一、定義
正則表達(dá)式是對(duì)字符串操作的一種邏輯公式蒋纬,就是用事先定義好的一些特定字符泊愧、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”官套,這個(gè)“規(guī)則字符串”用來(lái)表達(dá)對(duì)字符串的一種過(guò)濾邏輯酒奶。如果找到了符合這樣一種規(guī)則的字符串,我們就說(shuō)匹配上了奶赔,否則匹配失敗惋嚎。
二、匹配規(guī)則
1.語(yǔ)法規(guī)則
2.相關(guān)注解
a.反斜杠問(wèn)題
假如你需要匹配文本中的字符""站刑,那么使用編程語(yǔ)言表示的正則表達(dá)式里將需要4個(gè)反斜杠"\\":前兩個(gè)和后兩個(gè)分別用于在編程語(yǔ)言里轉(zhuǎn)義成反斜杠另伍,轉(zhuǎn)換成兩個(gè)反斜杠后再在正則表達(dá)式里轉(zhuǎn)義成一個(gè)反斜杠。其匹配過(guò)程如下:
為了解決輸入四個(gè)“\”的麻煩绞旅,我們可以使用python里的原生字符串(raw string)摆尝,即在字符串前面加上r。如下:
1 import re
2
3 print(re.search(r"\\abc","123\\abc"))
從上面可知因悲,使用原生字符串就省去了從字符串實(shí)值到re編譯器的字符串轉(zhuǎn)義過(guò)程堕汞,而編譯器編譯的時(shí)候仍然要轉(zhuǎn)義。
b.貪婪匹配與非貪婪匹配
貪婪匹配:正則表達(dá)式一般趨向于最大長(zhǎng)度匹配晃琳,也就是所謂的貪婪匹配讯检。如:
1 import re
2
3 print(re.match("ab.*c","abcdfghc"))
匹配的結(jié)果為整個(gè)字符串琐鲁。而非貪婪匹配就是匹配到結(jié)果就好,最少地匹配字符人灼。python默認(rèn)是貪婪模式绣否;在量詞后面直接加上一個(gè)問(wèn)號(hào)?就是非貪婪模式挡毅。
1 import re
2
3 print(re.match("ab.*?c","abcdfghc"))
這樣匹配的結(jié)果就是“abc”蒜撮。
三、模塊和函數(shù)
re 模塊
compile() 編譯語(yǔ)法規(guī)則
match() 從字符串開(kāi)頭位置開(kāi)始匹配
search() 從字符串任意位置匹配到第一個(gè)符合規(guī)則的字符串
findall 以列表形式返回所有匹配到的字符串
finditer 以迭代器形式返回所有匹配到的字符串
split() 拆分字符串
group() 獲取匹配到的字符串的分組信息