正則表達式總結

基本語法

元字符

代碼

說明

舉例

.

匹配除換行符外任意一個字符


[abc]

字符集合,只能表示一個字符位置。匹配所包含的任意一個字符


[^abc]

字符集合,只能表示一個字符位置。匹配除去集合內字符的任意一個字符


[a-z]

字符範圍,一個集合,表示一個字符位置匹配所包含的任意一個字符


[^a-z]

字符範圍,一個集合,表示一個字符位置匹配除去集合內字符的任意一個字符


\b

匹配單詞的邊界


\B

不匹配單詞的邊界


\d

等同[0-9] 匹配一位數字


\D

等同[^0-9] 匹配一位非數字


\s

匹配1位空白字符,包括換行符、製表符、空格等同[\f\r\n\t\v]


\S

匹配1位非空白字符


\w

等同[a-zA-Z0-9_] 包含中文


\W

匹配\w之外的字符


轉義

  • 凡是在正則表達式中有特殊意義的符號,轉義時使用\

重複

代碼

說明

舉例

*

前面的正則表達式重複0次或多次


+

前面的正則表達式重複至少一次


前面的正則表達式重複0次或1次


{n}

重複n次


{n,}

重複n次以上


{n,m}

重複n到m次


分組(捕獲)斷言

代碼

說明

舉例




x

y

匹配x或y




(pattern)

分組(捕獲)後會自動分配組號從1開始可以改變優先級 \數字 匹配對應的分組(指的是前一個匹配上的分組的內容)





(?:pattern)

只改變優先級不分組





(?<name>exp)(?nameexp)

分組捕獲 給組命名Python句法爲(?P<name>exp)





(?=exp)

零寬度正預測先行斷言斷言exp一定在匹配的右邊出現





(?<=exp)

零寬度正回顧後發斷言斷言exp一定出現在匹配的左邊出現





(?!exp)

零寬度負預測先行斷言斷言exp一定不會出現在右側





(?<!exp)

零寬度負回顧後發斷言斷言exp一定不會出現在左側





(?#comment)

註釋





斷言不會佔用分組號

貪婪與非貪婪

  • 默認貪婪模式,儘可能多的匹配字符串

代碼

說明

舉例

*?

匹配任意次,儘可能少重複


+?

匹配至少一次,儘可能少重複


??

匹配0或1次,儘可能少重複


{n}?

匹配至少n次,儘可能少重複


{n,m}?

匹配至少n次,至多m次,儘可能少重複


引擎選項

代碼

說明

舉例

IgnoreCase

匹配時忽略大小寫

re.Ire.IGNORECASE

Singleline

單行模式,可穿透/n

re.Sre.DOTALL

Multiline

多行模式

re.Mre.MULTILINE

IgnorePatternWhitespace

忽略表達式中空白字符,若要使用空白字符

re.Xre.VERBOSE

代碼 說明 舉例

IgnoreCase 匹配時忽略大小寫 re.Ire.IGNORECASE

Singleline 單行模式,可穿透/n re.Sre.DOTALL

Multiline 多行模式 re.Mre.MULTILINE

IgnorePatternWhitespace 忽略表達式中空白字符,若要使用空白字符 re.Xre.VERBOSE

Python中使用|(位或)運算開啓多種選項

Python正則表達式

re模塊

編譯

  • re.compile(pattern, flags=0)

  • 返回正則表達式對象regex

  • 正則表達式編譯的結果保存,下次使用同樣的pattern時不需要重新編譯

單次匹配

  • regex.match(string[, pos[, endpos]])

  • 從字符串開頭匹配,可指定開始與結束位置 返回match對象

  • regex.search(string[, pos[, endpos]])

  • 從頭搜索直到第一個匹配,可指定開始與結束位置 返回match對象

  • regex.fullmatch(string[, pos[, endpos]])

  • 整個字符串與正則表達式匹配

全文搜索

  • regex.findall(string[, pos[, endpos]])

  • 對整個字符串從左至右匹配,返回所有匹配項的列表

  • regex.finditer(string[, pos[, endpos]])

  • 對整個字符串,從左至右匹配,返回所有匹配項的迭代器,每項都是match對象

匹配替換

  • regex.sub(replacement, string, count=0)

  • 使用pattern對字符串string進行匹配,對匹配項用replacement替換

  • replacement可以是string、bytes、function

  • regex.subn(replacement, string, count=0)

  • 功能類似sub 返回一個元組 (new_string, number_of_subs_made)

分割字符串

  • regex.split(string, maxsplit=0)

  • 返回列表

分組

  • 使用(pattern)捕獲的數據放到組中

  • match類方法

  • group(N)

  • 1-N時對應的分組 0但會整個匹配的字符串

  • 如果使用了命名分組,可用group(name)方式取出

  • groups()

  • 返回所有組的一個元組

  • groupdict()

  • 返回所有命名分組的字典

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