re 模組使 python 語言擁有全部的正規表示式功能。
compile 函式根據乙個模式字串和可選的標誌引數生成乙個正規表示式物件。該物件擁有一系列方法用於正規表示式匹配和替換。
re 模組也提供了與這些方法功能完全一致的函式,這些函式使用乙個模式字串做為它們的第乙個引數。
re.match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match()就返回none。
函式語法:
re.match(pattern,string,flags=0)pattern:匹配的正規表示式
string:要匹配的字串。
flags:標誌位,用於控制正規表示式的匹配方式
import結果:reprint(re.match('
www', '
www.hbnu.com
').span()) #
在起始位置匹配
print(re.match('
com', '
www.hbnu.com
')) #
不在起始位置匹配
我們可以使用group(num) 或 groups() 匹配物件函式來獲取匹配表示式。
re.search 掃瞄整個字串並返回第乙個成功的匹配。
函式語法:
re.search(pattern,string,flags=0)裡面的三個引數和re.match函式一樣。
import結果:reprint(re.search('
www', '
www.aaa.com
').span()) #
在起始位置匹配
print(re.search('
com', '
www.aaa.com
').span()) #
不在起始位置匹配
re.match只匹配字串的開始,如果字串開始不符合正規表示式,則匹配失敗,函式返回none;而re.search匹配整個字串,直到找到乙個匹配。
python 的 re 模組提供了re.sub用於替換字串中的匹配項。
語法:
re.sub(pattern,repl,string,count=0,flags=0)引數:
importre結果:phone = "
2004-959-559 # 這是乙個國外**號碼"#
刪除字串中的 python注釋
num = re.sub(r'
#.*$
', ""
, phone)
print ("
**號碼是:{}
".format(num)) #
刪除非數字(-)的字串
num = re.sub(r'
\d', ""
, phone)
print ("
**號碼是 :
", num)
compile 函式用於編譯正規表示式,生成乙個正規表示式( pattern )物件,供 match() 和 search() 這兩個函式使用。
語法格式為:
re.compile(pattern[,flags])引數:
import結果:repattern = re.compile(r'
\d+') #
用於匹配至少乙個數字
m = pattern.match('
one12twothree34four
') #
查詢頭部,沒有匹配
(m)m = pattern.match('
one12twothree34four
', 2, 10) #
從'e'的位置開始匹配,沒有匹配
(m)m = pattern.match('
one12twothree34four
', 3, 10) #
從'1'的位置開始匹配,正好匹配
print (m) #
返回乙個 match 物件
print(m.group(0)) #
可省略 0
(m.start(0))
(m.end(0))
print(m.span(0))
在上面,當匹配成功時返回乙個 match 物件,其中:
在字串中找到正規表示式所匹配的所有子串,並返回乙個列表,如果沒有找到匹配的,則返回空列表。
注意:match 和 search 是匹配一次 findall 匹配所有。
語法格式為:
findall(string[,pos[,endpos]])引數:
importre結果:pattern = re.compile(r'
\d+') #
查詢數字
result1 = pattern.findall('
aaaaa 123 bbbbb 456')
result2 = pattern.findall('
aaa88aa123bbbbb456
', 0, 10)
(result1)
print(result2)
和 findall 類似,在字串中找到正規表示式所匹配的所有子串,並把它們作為乙個迭代器返回
re.finditer(pattern,string,flags=0)
importre結果:a = re.finditer(r"
\d+","
12aaaa32bbb43ccc3")
for match in
a:
print (match.group() )
split 方法按照能夠匹配的子串將字串分割後返回列表,它的使用形式如下:
re.split(pattern,string[,maxsplit=0,flags=0])
import結果:rea=re.split('
\w+', '
aaa, aaa, aaa.')
b=re.split('
(\w+)
', '
bbb, ccc, ddd.')
c=re.split('
\w+', '
ccc, ccc, ccc.
', 2)
d=re.split('
a', '
hello world
') #
對於乙個找不到匹配的字串而言,split 不會對其作出分割
(a)print
(b)print
(c)print(d)
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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...