Python之正規表示式筆記

2022-09-03 18:45:11 字數 1900 閱讀 4356

概述

概念

regular expression

一種文字模式,描述在搜尋文字時要匹配的乙個或多個字串

典型場景

資料驗證、文字掃瞄、文字提取、文字替換、文字分割

語法

字面值普通字元

需轉義:\  ^  $  .  |  ?  *  +  ()    {}

元字元匹配

單字,預定義元字元

.除\n外的所有字元   \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_]

批量備選     |  yes|no

量詞(字元、元字元,字符集如何重複)

? 0或1次   * 0或多次   + 1或多次    

特定: {n,m}範圍次數 {n}n次  {n,}至少n次   {,m}最多m次

貪婪與非貪婪

貪婪(預設):盡量匹配最大範圍結果

非貪婪盡量匹配最小的範圍結果

方法:量詞後追加? 例:??   *?   +?

邊界匹配

^ 行首   $ 行尾   \b 單詞邊界   \b 非單詞邊界    \a 輸入開頭    \z 輸入結尾

注:或因上下文差異有不同表

python 正則

模組import re

regexobject 正則物件

模式物件,表現編譯後的正規表示式(編譯為位元組碼並快取)

編譯     re.compile('模式')

.findall()  1查詢所有非重疊匹配項  2返回list

.match(string[,pos[,endpos]])  1匹配,僅從開始位置  2返回matchobject

.search(string[,[pos[,endpos]])  1任意位置搜尋  2返回matchobject

.finditer()  1查詢所有匹配項   2返回包括matchobject元素的迭代器

matchobject 匹配物件

表現被匹配的模式

.group() 1引數為0或空返回整個匹配 2有參時返回特定分組匹配細節 3引數也可以是分組名稱

.groups()   返回包含所有子分組的元組

.start() 返回特定分組的起始索引

.end() 返回特定分組的終止索引

.groupdict() 以字典表形式返回分組名及結果

group 編組

場景   1從匹配模式中提取資訊 2建立子正則以應用量詞  3限制備選項範圍

4重用正則模式中提取的內容

宣告   1(模式) 2(?p模式)

引用   1匹配物件內 m.group('name')  2模式內 (?p=name)  3表現內 \g

應用

字串操作  1 .split(string, maxsplit=0)   分割字串

2 .sub(repl, string, count=0)   替換字串

3 .subn(repl, string, count=0)   替換並返回替換數量

編譯標記  1 改變正則的預設行為  2 re.i  忽略大小寫  3 re.m  匹配多行

4 re.s  指定"."匹配所有字元,包括\n   …

模組級別操作  1 re.purge()  清理正則快取   2 re.escape()  逃逸字元

Python 正規表示式筆記

python 正規表示式筆記 正規表示式的先行斷言 lookahead 和後行斷言 lookbehind 正規表示式的先行斷言和後行斷言一共有4種形式 pattern 零寬正向先行斷言 zero width positive lookahead assertion pattern 零寬負向先行斷言 ...

Python筆記 正規表示式

1 如果直接給出字元,就是精確匹配。用 d可以匹配乙個數字,w可以匹配乙個字母或數字,可以匹配任意字元 00 d 可以匹配 007 但無法匹配 00a d d d 可以匹配 010 w w d 可以匹配 py3 py.可以匹配 pyc pyo py 2 要匹配變長的字元,在正規表示式中,用 表示任意...

Python 正規表示式 筆記

re 庫的 match 物件 re 庫的貪婪匹配和最小匹配 re,regex,regular expression 用簡潔形式表示了一組字串的特徵或模式,通用的字串表達框架。用前需要編譯,正規表示式由字元和操作符組成。表示任何單個字元 字符集,對單個字元給出取值範圍 非字符集,對單個字元給出排除範圍...