1 正則運算式
1.1 正則運算式可以做什么?
1.2 正則運算式基礎 * 元字符
表 5.2: 常用的反義代碼 
表 5.3: 常見空白元字符
1.3 正則運算式 * 貪婪與懶惰
表 5.5: 貪婪與懶惰
1.4 正則運算式 * 分支條件與分組
1.5 正則運算式 * 后項參考
1.6 正則運算式 * 零寬斷言
2 Python 中的 Re 模塊
2.1 re.compile 方法
re . compile ( string [ , flag ] )compile 方 法 常 用 的 參 數 及 其 說 明 如 下 , :string : 接 收 string , 表 示 輸 入 的 需 要 匹 配 的 字 符 串 , 無 默 認 值flags : 接 收 string , 表 示 匹 配 模 式 , 取 值 為 運 算 符 “ | ” 時 表 示 同 時 生 效 ,如 re.I | re.M , 默 認 為 None
re.I 忽略大小寫re.M 多行模式,改變“?”和“ $ ”的行為re.S “ .”任意匹配模式,改變“.”的行為re.L 使預定字符類 \w\W\b\B\s\S 取決與當前區域設定re.U 使預定字符類 \w\W\b\B\s\S\d\D 取決于 unicode 定義的字符屬性re.X 詳細模式,該模式下正則運算式可為多行,忽略空白字符并可加入注釋
2.2 re.search 方法
re . search ( pattern , string [ , flags ] )pattern : 接 收 Pattern 實 例 , 表 示 轉 換 后 的 正 則 表 達 式 , 無 默 認 值string : 接 收 string , 表 示 輸 入 的 需 要 匹 配 的 字 符 串 , 無 默 認 值flags : 接 收 string , 表 示 匹 配 模 式 , 取 值 為 運 算 符 “ | ” 時 表 示 同 時 生 效 ,如 re.I | re.M , 默 認 為 None
2.3 re.match & re.fullmatch
re . match ( pattern , string , flags = 0)pattern : 接 收 Pattern 實 例 , 表 示 轉 換 后 的 正 則 表 達 式 , 無 默 認 值string : 接 收 string , 表 示 輸 入 的 需 要 匹 配 的 字 符 串 , 無 默 認 值flags : 接 收 string , 表 示 匹 配 模 式 , 取 值 為 運 算 符 “ | ” 時 表 示 同 時 生 效 ,如 re.I | re.M , 默 認 為 None
re . fullmatch ( pattern , string [ , flags ] )pattern : 接 收 Pattern 實 例 , 表 示 轉 換 后 的 正 則 表 達 式 , 無 默 認 值string : 接 收 string , 表 示 輸 入 的 需 要 匹 配 的 字 符 串 , 無 默 認 值 flags : 接 收 string , 表 示 匹 配 模 式 , 取 值 為 運 算 符 “ | ” 時 表 示 同 時 生 效 ,如 re.I|re.M , 默 認 為 None
2.4 search,match,fullmatch 區別
#Python Code:
import re
strs = 'sHello World Hello World'
print(f"search方法: {re.search('Hello',strs)}")
print(f"match方法: {re.match('Hello',strs)}")
print(f"match方法: {re.match('sHello',strs)}")
print(f"fullmatch方法: {re.fullmatch(’Hello’,strs)}")
print(f"fullmatch方法: {re.fullmatch('sHello World Hello World',strs)}")
筆記 search 函式是在字串中任意位置匹配,只要有符合正則運算式的字串就匹配成功,其實有兩個匹配項,但 search 函式值回傳一個,而 match 函式是要從頭開始匹配,而字串開頭多了個字母 s ,所以無法匹配 fullmatch 函式需要完全相同,故也不匹配!
2.5 re.fifindall 方法
re . findall ( pattern , string [ , flags ] )pattern : 接 收 Pattern 實 例 , 表 示 轉 換 后 的 正 則 表 達 式 , 無 默 認 值string : 接 收 string , 表 示 輸 入 的 需 要 匹 配 的 字 符 串 , 無 默 認 值flags : 接收 string,表示匹配模式,取值為運算子 “ | ” 時表示同時生效 ,如 re.I | re.M ,默認為 None
2.6 re.fifinditer 方法
re . finditer ( pattern , string [ , flags ] )pattern : 接 收 Pattern 實 例 , 表 示 轉 換 后 的 正 則 表 達 式 , 無 默 認 值string : 接 收 string , 表 示 輸 入 的 需 要 匹 配 的 字 符 串 , 無 默 認 值flags : 接 收 string , 表 示 匹 配 模 式 , 取 值 為 運 算 符 “ | ” 時 表 示 同 時 生 效 ,如 re .I | re . M , 默 認 為 None
2.7 re.split 方法
re . split ( pattern , string , maxsplit = 0 , flags = 0)pattern : 接 收 Pattern 實 例 , 表 示 轉 換 后 的 正 則 表 達 式 , 無 默 認 值string : 接 收 string , 表 示 輸 入 的 需 要 匹 配 的 字 符 串 , 無 默 認 值flags : 接 收 string , 表 示 匹 配 模 式 , 取 值 為 運 算 符 “ | ” 時 表 示 同 時 生 效 ,如 re .I | re . M , 默 認 為 None
2.8 re.sub 方法 & re.subn() 方法
re . sub ( pattern , repl , string , count = 0 , flags = 0)pattern : 接 收 Pattern 實 例 , 表 示 轉 換 后 的 正 則 表 達 式 , 無 默 認 值string : 接 收 string , 表 示 輸 入 的 需 要 匹 配 的 字 符 串 , 無 默 認 值count 表 示 最 大 替 換 次 數flags : 接 收 string , 表 示 匹 配 模 式 , 取 值 為 運 算 符 “ | ” 時 表 示 同 時 生 效 ,如 re .I | re . M , 默 認 為 None
re . subn ( pattern , repl , string , count = 0 , flags = 0)pattern : 接 收 Pattern 實 例 , 表 示 轉 換 后 的 正 則 表 達 式 , 無 默 認 值string : 接 收 string , 表 示 輸 入 的 需 要 匹 配 的 字 符 串 , 無 默 認 值count 表 示 最 大 替 換 次 數flags : 接 收 string , 表 示 匹 配 模 式 , 取 值 為 運 算 符 “ | ” 時 表 示 同 時 生 效 , 如 re .I | re . M , 默 認 為 None
2.9 其他方法
#Python Code:
import re
s = "123dyalnABC"
print(re.search("([0-9]*)([a-z]*)([A-Z]*)",s).group())
#回傳123dyalnABC
print(re.search("([0-9]*)([a-z]*)([A-Z]*)",s).group(0)) #回傳123dyalnABC
print(re.search("([0-9]*)([a-z]*)([A-Z]*)",s).group(1)) #回傳123
print(re.search("([0-9]*)([a-z]*)([A-Z]*)",s).group(2)) #回傳dylan
print(re.search("([0-9]*)([a-z]*)([A-Z]*)",s).group(3)) #回傳ABC
由此可以看出,group() 是按照特定子組數字---小寫字母---大寫字母來獲取字串的, 對應關系是 group(1) 對應正則運算式物件的特定子組 1,group(2) 對應特定子組 2,group(3) 對應特定子組 3...... 一般地,s.group(N) 回傳正則運算式物件的第 N 組特定子組,group(0) 同 group() 一樣,對應整個正則運算式物件,
Python Code:
import re
s = "123dyalnABC"
print(re.search("([0-9]*)([a-z]*)([A-Z]*)",s).groups())
#回傳('123', 'dyaln', 'ABC')
3 正則運算式爬取貓眼電影
點贊過百更新正則匹配實踐,爬取貓眼電影,沖啊,奧利給!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/413436.html
標籤:python
