Python 程式設計快速上手 第七章總結
阿新 • • 發佈:2019-01-01
前言
在 Word 軟體中,我們總是習慣使用 CMD+F 用來查詢和替換文字,但是,正如作者所說:
雖然計算機可以很快地查詢文字,但你必須精確地告訴它要找什麼。
我們往往想要查詢一類文字,比如一段文字中網頁的網址,電話號碼,E-mail 地址等等。這時候,我們查詢的是一種“文字模式”,而正則表示式就是文字模式的描述方法。
定義
正則表示式:英文為 regular expression, 簡稱 regex,是文字模式的描述方法。
基本步驟
- 匯入模組:import re
- 建立一個 Regex 模式物件:即向 re.compile() 傳入一個字串值:phoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
- 匹配字串:使用 Regex( 模式)物件的 search() 方法(或者findall()方法)進行匹配對應的字串,將返回一個 Match 物件(或者一個
- 列表)。
1. 檢視結果。使用 Match() 物件的 group() 方法檢視結果。
匹配模式的符號
字元分類
縮寫字元:
- \d :0~9 \D: except for 0~9
- \w: word \W:except for alphas, numbers, underscores
- \s: space \S:except for space
自定義字元
- [aeiouAEIOU]:使用者自定義的字元分類; [aeiouAEIOU]
注意:可以使用[0-9],[a-zA-Z]來實現所有在其範圍內的匹配。
任意字元
- 萬用字元:. 除了換行之外的任何字元
次數匹配:
- {m,n}:匹配至少 m 次,至多 n 次的前面的分組
- ?:匹配 0 次或 1 次的前面的分組,它放在其他匹配符後面有改成不貪心匹配的功能
- *:匹配 0 次或 多次的前面的分組
- +:匹配 1 次或 多次前面的分組
其他匹配
開頭和結尾
spam:必須以 spam 開頭
spam $: 必須以 spam 結尾
管道匹配
| 這個符號被叫做管道,表示可以匹配模式兩邊中的一種。
更加高階的匹配
為了使用更加高階的匹配,比如不區分大小寫,忽略註釋,匹配換行的功能,需要設定建立 Regex 模式物件的第二個引數
re.IGNORECASE用於不區分大小寫的匹配:
格式:robocop = re.compile(r'robocop',re.I)
re. DOTALL 用於識別換行符的匹配
格式:robocop = re.compile(r'robocop',re.DOTALL)
re. VERBOSE 用於忽略註釋的匹配
格式:robocop = re.compile(r'robocop',re.VERBOSE)
替換字串:sub() 方法
格式:對一個 Regex 物件使用:
nameRegex = re.complie(r'Agent')
nameRegex.sub('CENSORED','Agent Alice gave the secret documents to Agent Bob')
作用:sub() 方法針對對一個 Regex 物件使用;
它含有兩個引數,第一個是用於取代匹配的字串的字串,第二個是匹配的內容;
結果返回一個字串。