re模塊是python獨有的匹配字符串的模塊,該模塊中提供的很多功能是基於正則表達式實現的,
而正則表達式是對字符串進行模糊匹配,提取自己需要的字符串部分,他對所有的語言都通用。
1、字符
2、字符集
3、量詞
貪婪模式:總是嘗試匹配盡可能多的字符
非貪婪則相反,總是嘗試匹配盡可能少的字符。
{0,} 匹配前壹個字符 0 或多次,等同於 * 元字符
{+,} 匹配前壹個字符 1 次或無限次,等同於 + 元字符
{0,1 }匹配前壹個字符 0 次或 1 次,等同於 ? 元字符
如果 () 後面跟的是特殊元字符如 (adc)* 那麽*控制的前導字符就是 () 裏的整體內容,不再是前導壹個字符
4、特殊分組用法表:只對正則函數返回對象的有用
5、斷言
從斷言的表達形式可以看出,它用的就是分組符號,只不過開頭都加了壹個問號,這個問號就是在說這是壹個非捕獲組,這個組沒有編號,不能用來後向引用,只能當做斷言。
匹配 <title>xxx</title> 中 xxx : (?<=<title>).*(?=</title>)
自己理解就是:
5、例子
(1)非
^(?!.*200).*$ ,只匹配200
^(?!.*[200|400]).*$ ,只匹配200和400
[^a-z] 反取,不含a-z字母的
(2) \u4e00-\u9fa5 中文
(3) r"\b([\u4e00-\u9fa5]\s?[\u4e00-\u9fa5]+)\b" # 小 明 匹配這種單字中間有空格的
compile 函數用於編譯正則表達式,生成壹個正則表達式( Pattern )對象,供 match() 和 search() 這兩個函數使用
match 嘗試從字符串的 起始位置 匹配壹個模式,如果不是起始位置匹配成功的話,返回none。
search 掃描 整個字符串 並返回 第壹個成功 的匹配。
re.match與re.search的區別:
正則表達式替換函數
替換匹配成功的指定位置字符串,並且返回替換次數,可以用兩個變量分別接受
(2) 兩個字符以上切割,放在 [ ] 中(不保留分隔符):
(3) 使用 ( ) 捕獲分組(保留分割符):
在字符串中找到正則表達式所匹配的所有子串,並返回壹個列表,如果沒有找到匹配的,則返回空列表。
註意: match 和 search 是匹配壹次 ,findall 匹配所有。
用法:
註意1:壹旦匹配成,再次匹配,是從前壹次匹配成功的,後面壹位開始的,也可以理解為匹配成功的字符串,不在參與下次匹配
註意2:如果沒寫匹配規則,也就是空規則,返回的是壹個比原始字符串多壹位的,空字符串列表
註意3:正則匹配到空字符的情況,如果規則裏只有壹個組,而組後面是 * 就表示組裏的內容可以是 0 個或者多過,這樣組裏就有了兩個意思:
壹個意思是匹配組裏的內容,
二個意思是匹配組裏 0 內容(即是空白)
所以盡量避免用 * 否則會有可能匹配出空字符串
正則表達式,返回類型為表達式對象的
如:<_sre.SRE_Match object; span=(6, 7), match='a'>
返回對象的,需要用正則方法取字符串,