Python 正規表示式

2021-09-24 07:41:36 字數 3152 閱讀 1918

compile 函式用於編譯正規表示式,生成乙個正規表示式( pattern )物件,供 match() 和 search() 這兩個函式使用。

re.compile(pattern[, flags])

複製**

引數說明:

pattern : 乙個字串形式的正規表示式

flags : 可選,表示匹配模式,比如忽略大小寫,多行模式等。

具體引數為:

re.i 忽略大小寫

re.l 表示特殊字符集 \w, \w, \b, \b, \s, \s 依賴於當前環境

re.m 多行模式

re.s 即為 . 並且包括換行符在內的任意字元(. 不包括換行符)

re.u 表示特殊字符集 \w, \w, \b, \b, \d, \d, \s, \s 依賴於 unicode 字元屬性資料庫

re.x 為了增加可讀性,忽略空格和 # 後面的注釋

>>> import re

>>> some_text = 'a,b,,,,c d'

>>> reobj = re.compile('[, ]+')

>>> reobj.split(some_text)

['a', 'b', 'c', 'd']

複製**

re.match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match()就返回none。

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

複製**

引數說明:

pattern 匹配的正規表示式

string 要匹配的字串。

flags 標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等等。

>>>import re

>>> pattern = re.compile(r'([a-z]+) ([a-z]+)', re.i) # re.i 表示忽略大小寫

>>> m = pattern.match('hello world wide web')

>>> print m # 匹配成功,返回乙個 match 物件

<_sre.sre_match object at 0x10bea83e8>

>>> m.group(0) # 返回匹配成功的整個子串

'hello world'

>>> m.span(0) # 返回匹配成功的整個子串的索引

(0, 11)

>>> m.group(1) # 返回第乙個分組匹配成功的子串

'hello'

>>> m.span(1) # 返回第乙個分組匹配成功的子串的索引

(0, 5)

>>> m.group(2) # 返回第二個分組匹配成功的子串

'world'

>>> m.span(2) # 返回第二個分組匹配成功的子串

(6, 11)

>>> m.groups() # 等價於 (m.group(1), m.group(2), ...)

('hello', 'world')

複製**

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

注意: match 和 search 是匹配一次 findall 匹配所有。

findall(string[, pos[, endpos]])

複製**

引數說明:

string : 待匹配的字串。

pos : 可選引數,指定字串的起始位置,預設為 0。

endpos : 可選引數,指定字串的結束位置,預設為字串的長度。

# -*- coding:utf8 -*-

>>>import re

>>>pattern = re.compile(r'\d+') # 查詢數字

>>>result1 = pattern.findall('runoob 123 google 456')

>>>result2 = pattern.findall('run88oob123google456', 0, 10)

>>>print(result1)

['123', '456']

>>>print(result2)

['88', '12']

複製**

按照能夠匹配的子串將字串分割後返回列表。 語法格式為: re.split(pattern, string[, maxsplit=0, flags=0]) 引數說明:

pattern : 匹配的正規表示式

string : 要匹配的字串。

maxsplit : 分隔次數,maxsplit=1 分隔一次,預設為 0,不限制次數。

flags : 標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等等。

>>>import re

>>> re.split('\w+', 'runoob, runoob, runoob.')

['runoob', 'runoob', 'runoob', '']

>>> re.split('(\w+)', ' runoob, runoob, runoob.')

['', ' ', 'runoob', ', ', 'runoob', ', ', 'runoob', '.', '']

>>> re.split('\w+', ' runoob, runoob, runoob.', 1)

['', 'runoob, runoob, runoob.']

>>> re.split('a*', 'hello world') # 對於乙個找不到匹配的字串而言,split 不會對其作出分割

['hello world']

複製**

python正規表示式元字元 正規表示式

字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

Python 正規表示式

1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...

Python正規表示式

學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...