python正規表示式之使用規則

2022-07-09 05:24:15 字數 2317 閱讀 4411

正規表示式

在我看來是提供乙個模板,將待匹配的字串與模板匹配,匹配不到則返回為空,匹配成功根據需要返回匹配的字串。

正規表示式比字串本身的功能要強一點,當然效能上略有不如。

我們使用正規表示式主要有兩種目的,

是否包含模板字串;

> 得到匹配字串。

python 中使用正規表示式時需要引入「re」模組,為了避免記憶上的混亂,本文只記載一種最常用的使用正規表示式的方式。

1

#encoding:utf-823

#引入re模組

4importre5

6#生成正規表示式模板

7 pat = re.compile(r'12'

)89#

匹配結果

10 m=pat.search("

123 12")

11printm12

13#匹配結果

14 m=pat.search("

3 2")15

printm16

17#輸出:18

#<_sre.sre_match object at 0x01fcfb48>19#

none

在一些示例中,在匹配結果也會用到match方法,match和search的區別如下:

match :只從字串的開始與正規表示式匹配,匹配成功返回matchobject,否則返回none;

search :將字串的所有字串嘗試與正規表示式匹配,如果所有的字串都沒有匹配成功,返回none,否則返回matchobject;

示例如下:

pat = re.compile(r'12'

)m=pat.search("

312"

)printm#

<_sre.sre_match object at 0x01fcfb48>

m=pat.match("

312"

)printm#

none

m=pat.match("

123"

)printm#

<_sre.sre_match object at 0x01fcfb48>

pat = re.compile(r'

href="([^"]*)"')

s = '

起點中文

'm =pat.search(s)

print

m.group(0)

#href="

print m.group(1)

#

「()」表示我們想要提取的字串內容,用group()函式方法取得,group(0) 取得匹配的字串,group(1)取得第乙個分組。

當要取得所有符合規則的字串時我們可使用findall()方法

pat = re.compile(r'

href="([^"]*)"')

s = '

起點中文

起點中文

'm =pat.findall(s)

printm#

['', '']

此時若匹配返回的結果是乙個list。

pat=re.compile(r'href="([^"]*)"')

正則裡面有個『r』是原生字串的意思,它表示不轉義,例如:

path="

c:\noway

"print

path#c:

#oway

path=r"

c:\noway

"print

path

#c:\noway

正規表示式用」\\」表示反斜槓符號,因此當要匹配字串中的「\\」時需要用「\\\\」,前兩個表示乙個反斜槓即轉義字元,後兩個表示真正的反斜槓。當加上字首r時,就只用「\\」匹配反斜槓。

示例如下:

re_str_patt = "

\\\\

"reobj =re.compile(re_str_patt)

str_test = "

abc\\cd\\hh

"print

reobj.findall(str_test)

#['\\', '\\']

r_str_patt = r"\\"

print

reobj.findall(str_test)

#['\\', '\\']

Python之正規表示式

正規表示式正規表示式主要用來匹配字串,例如 判斷乙個字串是否是乙個合法的 思想是用描述性的語言給字串乙個規則。re模組中的match函式提供了這種功能,若匹配成功則返回匹配物件,否則返回none。一 語法 d 表示匹配數字 w 表示匹配字母或數字 可以匹配任意字元 s可以匹配乙個空格或者tab 特殊...

Python之正規表示式

正規表示式元字元如下 匹配除換行符以外的所以字元 規定匹配模式必須出現在目標字串的開頭,例如 hell hello hellboy 規定匹配模式必須出現在目標字串的結尾,例如 ar car bar 其前乙個字元必須在目標物件中連續出現零次或多次 其前乙個字元必須在目標物件中連續出現一次或多次 其前乙...

Python之正規表示式

匯入re模組 檢索和替換 re.sub re.sub pattern,repl,string,count 0,flags 0 pattern 正則中的模式字串 repl 替換的字串,也可為乙個函式 string 要被查詢替換的原始字串 count 模式匹配後替換的最大次數,預設 0 表示替換所有的匹...