python3 的 re 模組使 python 語言擁有全部的正規表示式功能,它提供 perl 風格的正規表示式模式。
compile 函式根據乙個模式字串和可選的標誌引數生成乙個正規表示式物件。該物件擁有一系列方法用於正規表示式匹配和替換。
re 模組也提供了與這些方法功能完全一致的函式,這些函式使用乙個模式字串做為它們的第乙個引數。
本章節主要介紹python中常用的正規表示式處理函式。
re.match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match()就返回none。
函式語法:
re.match(pattern, string, flags=0)
函式引數說明:
引數描述
pattern
匹配的正規表示式
string
要匹配的字串。
flags
標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等等。參見:正規表示式修飾符 - 可選標誌
匹配成功re.match方法返回乙個匹配的物件,否則返回none。
我們可以使用group(num) 或 groups() 匹配物件函式來獲取匹配表示式。
匹配物件方法
描述group(num=0)
匹配的整個表示式的字串,group() 可以一次輸入多個組號,在這種情況下它將返回乙個包含那些組所對應值的元組。
groups()
返回乙個包含所有小組字串的元組,從 1 到 所含的小組號。
例項:
#!/usr/bin/python
import re
line = "cats are smarter than dogs"
matchobj = re.match( r'(.*) are (.*?) .*', line, re.m|re.i)
if matchobj:
print "matchobj.group() : ", matchobj.group()
print "matchobj.group(1) : ", matchobj.group(1)
print "matchobj.group(2) : ", matchobj.group(2)
else:
print "no match!!"
以上例項執行結果如下:
matchobj.group() : cats are smarter than dogs
matchobj.group(1) : cats
matchobj.group(2) : smarter
re.search 掃瞄整個字串並返回第乙個成功的匹配。
函式語法:
re.search(pattern, string, flags=0)
函式引數說明:
引數描述
pattern
匹配的正規表示式
string
要匹配的字串。
flags
標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配等等。
匹配成功re.search方法返回乙個匹配的物件,否則返回none。
我們可以使用group(num) 或 groups() 匹配物件函式來獲取匹配表示式。
匹配物件方法
描述group(num=0)
匹配的整個表示式的字串,group() 可以一次輸入多個組號,在這種情況下它將返回乙個包含那些組所對應值的元組。
groups()
返回乙個包含所有小組字串的元組,從 1 到 所含的小組號。
例項
#!/usr/bin/python
import re
line = "cats are smarter than dogs";
searchobj = re.search( r'(.*) are (.*?) .*', line, re.m|re.i)
if searchobj:
print "searchobj.group() : ", searchobj.group()
print "searchobj.group(1) : ", searchobj.group(1)
print "searchobj.group(2) : ", searchobj.group(2)
else:
print "nothing found!!"
以上例項執行結果如下:
searchobj.group() : cats are smarter than dogs
searchobj.group(1) : cats
searchobj.group(2) : smarter
re.match只匹配字串的開始,如果字串開始不符合正規表示式,則匹配失敗,函式返回none;而re.search匹配整個字串,直到找到乙個匹配。
import re
# 將匹配的數字乘以 2
def double(matched):
value = int(matched.group('value'))
return str(value * 2)
s = 'a23g4hfd567'
print(re.sub('(?p\d+)', double, s))
?p的意思就是命名乙個名字為value的組,匹配規則符合後面的/d+
參考:詳見菜鳥教程
python 正規表示式相關
注意 python3.x 的print要有括號,python 2.x的不需要 放上學習時寫的例子 import rem re.match r w w p.hello world print m.string m.string print m.re m.re print m.pos m.pos pri...
正規表示式 相關
限定符 說明 指定零個或更多個匹配 例如 w 或 abc 等效於。指定乙個或多個匹配 例如 w 或 abc 等效於。指定零個或乙個匹配 例如 w?或 abc 等效於。指定恰好 n 個匹配 例如 pizza 指定至少 n 個匹配 例如 abc 指定至少n 個但不多於m 個匹配。指定盡可能少地使用重複的...
正規表示式相關
我們知道匹配字串通常用正規表示式,因為幾乎每種語言都有自己的正規表示式引擎,所以效率會比你自己寫演算法要高效的多。下面來看下一些常用的正規表示式運算子。注意 這裡主要是個人總結,所以都會以一些自己用到的東西為主,如果要看具體的api,請在網上查詢 基礎知識儲備 稍微注意下一些細節的地方,比如 和 的...