1. 程式人生 > >Python 程式設計快速上手 第七章總結

Python 程式設計快速上手 第七章總結

前言

在 Word 軟體中,我們總是習慣使用 CMD+F 用來查詢和替換文字,但是,正如作者所說:

雖然計算機可以很快地查詢文字,但你必須精確地告訴它要找什麼。

我們往往想要查詢一類文字,比如一段文字中網頁的網址,電話號碼,E-mail 地址等等。這時候,我們查詢的是一種“文字模式”,而正則表示式就是文字模式的描述方法。

定義

正則表示式:英文為 regular expression, 簡稱 regex,是文字模式的描述方法。

基本步驟

  1. 匯入模組:import re
  2. 建立一個 Regex 模式物件:即向 re.compile() 傳入一個字串值:phoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
  3. 匹配字串:使用 Regex( 模式)物件的 search() 方法(或者findall()方法)進行匹配對應的字串,將返回一個 Match 物件(或者一個
  4. 列表)。
    1. 檢視結果。使用 Match() 物件的 group() 方法檢視結果。

匹配模式的符號

字元分類

縮寫字元:
  1. \d :0~9 \D: except for 0~9
  2. \w: word \W:except for alphas, numbers, underscores
  3. \s: space \S:except for space
自定義字元
  1. [aeiouAEIOU]:使用者自定義的字元分類; [aeiouAEIOU]
     except for these chracters

注意:可以使用[0-9],[a-zA-Z]來實現所有在其範圍內的匹配。

任意字元
  1. 萬用字元:. 除了換行之外的任何字元

次數匹配:

  1. {m,n}:匹配至少 m 次,至多 n 次的前面的分組
  2. ?:匹配 0 次或 1 次的前面的分組,它放在其他匹配符後面有改成不貪心匹配的功能
  3. *:匹配 0 次或 多次的前面的分組
  4. +:匹配 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 物件使用;
它含有兩個引數,第一個是用於取代匹配的字串的字串,第二個是匹配的內容;
結果返回一個字串。