Python- re模塊

> re 模塊

正則表達式(或 RE)是一種小型的、高度專業化的編程語言,(在Python中)它內嵌在Python中,並通過 re 模塊實現。正則表達式模式被編譯成一系列的字節碼,然後由用 C 編寫的匹配引擎執行。

字符匹配:普通字符、元字符

1、普通字符類似精確匹配:

re.findall()第一個參數是規則,第二個參數是匹配的字符串。
Python- re模塊

2、元字符

元字符:*. ^ $ + ? { } [ ] | ( ) **

1、. 一個點號代表一個任意字符,多個代表多個。不包括換行符號(\n , \t , \r)

Python- re模塊
2、^ 開頭符號 (^a :表示匹配以a開頭字符串)

3、$ 結尾符號 (a$: 表示匹配以a結尾的字符串)

4、* 星號代表匹配 0到無窮次

5、+ 代表匹配 1 到 無窮次

6、 代表匹配 0 到 1次

7、{} {0,1} 這樣寫代表匹配0到1次,{2,8}代表匹配2到8次

8、[] 這個中括號是 字符集 的意思。例 :k[yc] 表示匹配 ky 或 kc ‘或’的意思

Python- re模塊

字符集裏面可以應用3個符號: - . ^ . \ ,除了這三個符號,其餘符號都代表是字符

加個 - 符號:
Python- re模塊

加個 ^ 符號,‘非’ 的意思:
Python- re模塊

字符集加 \ 跟元字符效果一樣,(轉義符)

**元字符之轉義符\

反斜槓後邊跟元字符去除特殊功能,比如.
反斜槓後邊跟普通字符實現特殊功能,比如\d

\d 匹配任何十進制數;它相當於類 [0-9]。
\D 匹配任何非數字字符;它相當於類 [^0-9]。
\s 匹配任何空白字符;它相當於類 [ \t\n\r\f\v]。
\S 匹配任何非空白字符;它相當於類 [^ \t\n\r\f\v]。
\w 匹配任何字母數字字符;它相當於類 [a-zA-Z0-9]。
\W 匹配任何非字母數字字符;它相當於類 [^a-zA-Z0-9
]
\b 匹配一個特殊字符邊界,比如空格 ,&,#等

例如使用 \b 就要使用轉義符:
Python- re模塊

匹配字符串'jfdji\ldfdsf' 裏的 i\l ,就要多加3個 \ 因爲python解釋器轉義之後傳給 re模塊 ,re模塊再轉義:

Python- re模塊 打印結果是兩個 \ 應該是進去兩個出來兩個。

Python- re模塊

9、| 代表或的意思。例如:an|jk :匹配 an 字符串 或 jk 字符串

10、() 括號內字符串爲整體 例如: (abc) 代表匹配 abc 字符串

Python- re模塊

re模塊函數方法

re.findall('a','alfgd') #返回所有滿足匹配條件的結果,放在列表裏

re.search() # 函數會在字符串內查找模式匹配,只到找到第一個匹配然 後返回一個包含匹配信息的對象,該對象可以通過調用 group()方法得到匹配的字符串,如果字符串沒有匹配,則 返回 None。

Python- re模塊

re.search('(?P&lt;組名&gt;[a-z+])') ,可以給匹配到的數據設置組名(?P<組名>是gu固定格式

Python- re模塊

`re.match('a','abc').group()`` 和 search一樣,不過match只從字符串開頭匹配 ,如果這個例子不是 a 開頭 ,會報錯

re.split() 分割字符串 例:
Python- re模塊
上圖中分割步驟爲:
按字符串第一個a分割,因爲a左邊爲空所以得到 ' ' 和cvabjkk ,然後遇到a再分割得到 cv 和bjkk , 然後再從 b分割 b左邊爲空 ,變成 ' ' jkk ,然後整個加起來: ['', 'cv', '', 'jkk']

re.sub() 替換方法,有4個參數。例如 re.sub('\d','abc','adfs5dfs6',1)
上述例子第一個參數爲要被替換的字符串,第二個爲替換後的字符串,第三個爲要修改的原始字符串,第四個爲要替換多少次
Python- re模塊

re.subn('\d','abc','adfs5dfs6') 加個n可以統計被替換多少次:

Python- re模塊

re.compile() 制定匹配規則:

Python- re模塊

re.finditer() 會把匹配結果變成一個迭代器;

Python- re模塊

注意

如下圖,應該匹配出 www.baidu.com 以及www.sina.com ,顯示結果沒有匹配:
Python- re模塊

中間家裏 括號(分組),會優先顯示出分組裏的內容,要取消有限權限 加上 ?:

Python- re模塊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章