古詩詞大全網 - 古詩大全 - Python之re模塊

Python之re模塊

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'>

返回對象的,需要用正則方法取字符串,