python相關的正規表示式

2021-09-27 07:41:11 字數 2876 閱讀 8659

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,請在網上查詢 基礎知識儲備 稍微注意下一些細節的地方,比如 和 的...