Python正規表示式筆記 re模組常用函式和方法

2021-08-28 02:54:42 字數 1782 閱讀 9041

有幾個概念要先了解清楚。

函式:可以直接呼叫的實現特定功能的**塊。

方法:跟函式一樣是實現特定功能的**塊,但是方法跟函式有一點區別,就是方法需要被物件呼叫,而函式可以直接呼叫。

正規表示式物件:當使用compile函式,返回的就是乙個正規表示式物件。你也可以直接使用乙個字串來表示正規表示式,但最終字串會被編譯成正規表示式物件,而更有效的方法是使用compile函式對字串進行預編譯,有利於提公升執行效能。

匹配物件:當成功呼叫match或search方法,就會返回匹配物件,匹配物件有兩個主要方法group和groups。

group方法可以返回特定的子組,也可以方法整個匹配物件。

這個方法返回包含全部子組的元組。

match試圖從字串起始開始對模式進行匹配,匹配成功就返回匹配物件,失敗就返回none。

in [20]: r = re.match('foo', 'fooboo')

in [21]: print(r)

<_sre.sre_match object; span=(0, 3), match='foo'>

in [22]: r = re.match('foo', 'booboo')

in [23]: print(r)

none

如果匹配模式出現在字串中間部分而不是起始部分,就要用search而不是match,search會對字串進行搜尋第一次跟模式匹配的部分,匹配成功就返回匹配物件,失敗就返回none。

# 有兩部分跟模式匹配,只搜尋第一部分

in [26]: r = re.search('foo', 'seafooddfooc')

in [27]: r

out[27]: <_sre.sre_match object; span=(3, 6), match='foo'>

in [28]: r.group()

out[28]: 'foo'

查詢字串中模式匹配到的所有出現情況,返回乙個列表。

in [29]: re.findall('foo', 'dfooffoorbfoofooh')

out[29]: ['foo', 'foo', 'foo', 'foo']

finditer是與findall類似但更節省記憶體的變體,這個函式返回的是乙個迭代器。

in [39]: r = re.finditer('foo', 'dfooffoorbfoofooh')

in [40]: for i in r:

...: print(i.group())

...:

foofoo

foofoo

用於替換字串中與模式匹配的部分。

in [43]: re.sub('/', '-', '2018/1/1')

out[43]: '2018-1-1'

re.split是比普通字串split方法更強大的分割字串處理方式,可以通過定義正規表示式處理複雜的字串分割。

in [55]: s = 'mountain view, ca 94040'

in [56]: re.split(', | (?=\d|[a-z])', s)

out[56]: ['mountain view', 'ca', '94040']

# 以上主要參考《python核心程式設計》。

正規表示式re筆記

import re 1.re.match 只能從頭開始匹配 例如 ret re.match abc 123abc123abc 匹配abc失敗 ret re.match abc abc123 匹配abc成功 ret.span 返回匹配的索引範圍 0,2 ret.group 返回匹配的字元 abc 2....

python 正規表示式 re

match 和 search 的區別 match是從字串開頭匹配,而search是在整個字串中匹配。如 p re.compile a z p.match message none 因為開頭是 因此無法匹配 而 m p.search message print m re.matchobject ins...

python正規表示式 re

re.match 嘗試從字串的開始匹配乙個模式,如 下面的例子匹配第乙個單詞。import retext jgood is a handsome boy,he is cool,clever,and so on.m re.match r w s text ifm print m.group 0 n m...