Python3正規表示式和re模組

2021-09-26 02:31:49 字數 4908 閱讀 1322

1. 正規表示式

1.1 正規表示式符號

2. re模組

2.1 re.compile(pattern[, flags])

2.2 re.findall(pattern, string, flags=0)

2.3 re.finditer(pattern, string, flags=0)

2.4 re.match(pattern, string, flags=0)

2.5 re.serach(pattern, string, flags=0)

2.6 re.split(pattern, string[, maxsplit=0, flags=0])

2.7 re.sub(pattern, repl, string, count=0, flags=0)

[ ]可以取消元字元的特殊功能,元字元僅僅為其本身(\ ^  -例外)

正規表示式符號

描述'.'

萬用字元,預設匹配除'\n'之外的任意乙個字元

'^'匹配字元開頭

'$'匹配字元結尾

'*'貪婪匹配。匹配前面的子表示式0或多次。例如,zo*能匹配「z」,也能匹配「zo」以及「zoo」。等價於

'+'匹配前面的子表示式1或多次。例如,「zo+」能匹配「zo」以及「zoo」,但不能匹配「z」等價於

'?'匹配前面的子表示式0或1次。等價於

'.*'

匹配除'\n'之外的任意乙個字元0或多次

''匹配前乙個字元m次

''貪婪匹配。匹配前乙個字元至少n次

''貪婪匹配。匹配前乙個字元n到m次

'[abc]'

匹配所包含的任意乙個字元

'[a-z]'

匹配指定範圍內的任意字元

'[^a-z]'

匹配任何不在指定範圍內的任意字元

'|'匹配|左或|右的字元

a|b匹配a或b

'\'反斜槓後邊跟元字元去除特殊功能,反斜槓後邊跟部分普通字元實現特殊功能

'(re)'

分組匹配,匹配括號內的表示式

'\a'

匹配字串開始

'\b'

匹配乙個單詞的邊界,也就是指單詞和空格間的位置,需加r(原始字串)

'\b'

匹配非單詞邊界。

'\d'

匹配任何十進位制數。等價於[0-9]

'\d'

匹配任何非數字字元。等價於[^0-9]

'\g'

匹配最後匹配完成的位置

'\n'

匹配乙個換行符

'\s'

匹配任何不可見字元。等價於[ \f\n\r\t\v]。

'\s'

匹配任何可見字元。等價於[^ \f\n\r\t\v]。

'\t'

匹配乙個製表符

'\w'

匹配不包括下劃線的任何字母數字字元或中文。類似但不等價於「[a-za-z0-9_]

'\w'

匹配任何非單詞字元。等價於[^a-za-z0-9_]

'\z'

匹配字串結束

'\z'

匹配字串結束。如果存在換行,只匹配到換行前的結束字串

方法描述

re.compile(pattern[, flags])

用於編譯正規表示式,生成乙個正規表示式(

pattern

)物件,供

match()

和search()

這兩個函式使用。

re.findall(pattern, string, flags=0)

在字串中找到正規表示式所匹配的所有子串,並返回乙個列表。如果沒有找到匹配的,則返回空列表

re.finditer(pattern, string, flags=0)

在字串中找到正規表示式所匹配的所有子串,並把它們作為乙個迭代器返回

re.match(pattern, string, flags=0)

返回只在字串開始匹配的物件。可以使用group() 或 groups() 匹配物件函式來獲取匹配表示式

re.serach(pattern, string, flags=0)

返回匹配到的第乙個物件。可以使用group() 或 groups() 匹配物件函式來獲取匹配表示式

re.split(pattern, string[, maxsplit=0, flags=0])

按照能夠匹配的子串將字串分割後返回列表

re.sub(pattern, repl, string, count=0, flags=0)

替換字串中的匹配項

flags引數

說明re.l

使匹配對大小寫不敏感

re.l

做本地化識別匹配(locale-aware)

re.m

多行匹配,影響^和$

re.s

使.匹配包括換行在內的所有字元

re.u

根據unicode字符集解析字元。這個標誌影響\w,\w,\b,\b

re.x

該標誌通過給予更靈活的格式以便你將正規表示式寫得更容易理解

用於編譯正規表示式,生成乙個正規表示式(

pattern

)物件,供

match()

和search()

這兩個函式使用。

['.com']在字串中找到正規表示式所匹配的所有子串,並返回乙個列表。如果沒有找到匹配的,則返回空列表

['這個是內容', '這個是內容']

>>> li = '

'>>> re.findall('(.*)',li)                  #貪婪匹配

['這個是內容

這個是內容']

>>> re.findall('(.*?)',li)               #惰性匹配

['這個是內容', '這個是內容']

在字串中找到正規表示式所匹配的所有子串,並把它們作為乙個迭代器返回

>>> import re

>>> a = re.finditer('\d', 'adf12345afds')

>>> print(next(a).group())

1>>> print(next(a).group())

2>>> print(next(a).group())

3>>> print(next(a).group())

4>>> print(next(a).group())

5

返回只在字串開始匹配的物件。可以使用group() 或 groups() 匹配物件函式來獲取匹配表示式

>>> import re

>>> html = "這是乙個超連結!"

>>> re.match('<(\w+)>.*',html)

這是乙個超連結!'>

>>> re.findall('(.*)',html)

['這是乙個超連結!']

>>> ret = re.match('(.*)', html)           #分組匹配

>>> ret.group()

'這是乙個超連結!'

>>> ret.group(1)

'這是乙個超連結!'

返回匹配到的第乙個物件。可以使用group() 或 groups() 匹配物件函式來獲取匹配表示式

>>> import re

>>> ret = re.search('(?p\d)/(?p\w)', 'weeew34ttt123/ooo')

>>> ret.group()

'123/ooo'

>>> ret.group('id')

'123'

>>> ret.group('name')

'ooo'

按照能夠匹配的子串將字串分割後返回列表

>>> import re

>>> re.split('[b]', 'abcdabcdabcd')

['a', 'cda', 'cda', 'cd']

>>> re.split('[bd]', 'abcdabcdabcd')

['a', 'c', 'a', 'c', 'a', 'c', '']

>>> re.split('[ab]', 'abcdabcdabcd')

['', '', 'cd', '', 'cd', '', 'cd']

替換字串中的匹配項

>>> import re

>>> re.sub('p.*n', 'world', 'hello,python')

'hello,world'

>>> re.sub('\d', 'abc', 'p1p2p3')

'pabcpabcpabc'

python3正規表示式

正規表示式,又稱規則表示式。英語 regular expression,在 中常簡寫為regex regexp或re 電腦科學的乙個概念。正規表示式通常被用來檢索 替換那些符合某個模式 規則 的文字。正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元 及這些特定字元的組合,組成乙個...

Python3 正規表示式

常用的匹配模式 正規表示式是乙個特殊的字串行,它能幫助你方便的檢查乙個字串是否與某種模式匹配。re 模組使 python 語言擁有全部的正規表示式功能。re.match函式 re.match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match 就返回none。re.match...

Python3 正規表示式

正規表示式是乙個特殊的字串行,它能幫助你方便的檢查乙個字串是否與某種模式匹配。python 自1.5版本起增加了re 模組,它提供 perl 風格的正規表示式模式。re 模組使 python 語言擁有全部的正規表示式功能。compile 函式根據乙個模式字串和可選的標誌引數生成乙個正規表示式物件。該...