Python中re模組及正規表示式

2021-07-26 03:28:49 字數 1993 閱讀 7107

re.match 嘗試從字串的開頭匹配乙個模式,如:下面的例子匹配第乙個單詞。

import re

text = "jgood is a handsome boy, he is cool, clever, and so on..."

m = re.match(r"(\w+)\s", text)

if m:

print (m.group(0), '\n', m.group(1))

else:

print ('not match')

re.match的函式原型為:re.match(pattern, string, flags)flags定義包括:

re.search函式會在字串內查詢模式匹配,只到找到第乙個匹配然後返回,如果字串沒有匹配,則返回none。

import re

text = "jgood is a handsome boy, he is cool, clever, and so on..."

m = re.search(r'\shan(ds)ome\s', text)

if m:

print m.group(0), m.group(1)

else:

print

'not search'

re.search的函式原型為:re.search(pattern, string, flags)每個引數的含意與re.match一樣。

re.match與re.search的區別:re.match只匹配字串的開頭,如果字串開頭不符合正規表示式,則匹配失敗,函式返回none;而re.search匹配整個字串,直到找到乙個匹配。

re.sub用於替換字串中的匹配項。下面乙個例子將字串中的空格 』 』 替換成 『-』 :

import re

text = "jgood is a handsome boy, he is cool, clever, and so on..."

print (re.sub(r'\s+', '-', text))

re.sub的函式原型為:re.sub(pattern, repl, string, count)re.sub還允許使用函式對匹配項的替換進行複雜的處理。如:re.sub(r'\s', lambda m: '[' + m.group(0) + ']', text, 0);將字串中的空格』 『替換為』[ ]』。

可以使用re.split來分割字串,如:re.split(r』\s+』, text);將字串按空格分割成乙個單詞列表。

re.findall可以獲取字串中所有匹配的字串。如:re.findall(r』\w*oo\w*』, text);獲取字串中,包含』oo』的所有單詞。

可以把正規表示式編譯成乙個正規表示式物件。可以把那些經常使用的正規表示式編譯成正規表示式物件,這樣可以提高一定的效率。下面是乙個正規表示式物件的乙個例子:

import re

text = "jgood is a handsome boy, he is cool, clever, and so on..."

regex = re.compile(r'\w*oo\w*')

print (regex.findall(text)) #查詢所有包含'oo'的單詞

print (regex.sub(lambda m: '[' + m.group(0) + ']', text)) #將字串中含有'oo'的單詞用括起來。

python 正則re模組

1.正則各種字元表示的含義 預設匹配除 n之外的任意乙個字元,若指定flag dotall,則匹配任意字元,包括換行 匹配字元開頭 匹配 號前的字元0次或多次,re.findall ab cabb3abcbbac 結果為 abb ab a 匹配前乙個字元1次或多次,re.findall ab ab ...

正則re模組

匹配任意乙個字元 以某個字元開頭 以某個字元結尾 匹配0次或多次 匹配一次或多次 匹配0次或1次 匹配n次 匹配n次或多次 匹配n次到m次 字符集,非 a z 匹配小寫字母a到z的任意字母一次 a z 匹配除了小寫字母a到z之外的任意字元一次 d 匹配數字0 9,0次或多次 d匹配任何十進位制數,0...

re正則模組

1.正規表示式的常用符號 預設匹配除 n之外的任意乙個字元,若指定flag dotall,則匹配任意字元,包括換行 匹配字元開頭,若指定flags multiline,這種也可以匹配上 r a nabc neee flags re.multiline 匹配字元結尾,或e.search foo bfo...