python3正規表示式

2021-10-02 21:57:13 字數 4168 閱讀 3361

re.match函式嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match()就返回none。

函式語法:

re.match(pattern, string, flags=0)

函式引數說明:

引數描述

pattern

匹配的正規表示式

string

要匹配的字串

flags

標誌位,用於控制正規表示式的匹配方式,如:是否區分大小寫,多行匹配

匹配成功re.match方法返回乙個匹配的物件,否則返回none。

可以使用group(num) 或 groups() 匹配物件函式來獲取匹配表示式。

示例

import re

line =

"cats are smarter than dogs"

# .* 表示任意匹配除換行符(\n、\r)之外的任何單個或多個字元

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() 匹配物件函式來獲取匹配表示式。

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與re.search的區別

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

re.sub函式用於替換字串中匹配項。

函式語法:

re.sub(pattern, repl, string, count=0, flags=0)

引數:

pattern : 正則中的模式字串。

repl : 替換的字串,也可為乙個函式。

string : 要被查詢替換的原始字串。

count : 模式匹配後替換的最大次數,預設 0 表示替換所有的匹配。

flags : 編譯時用的匹配模式,數字形式。

前三個為必選引數,後兩個為可選引數。

示例:

import re

phone =

"2004-959-559 # 這是乙個**號碼"

# 刪除注釋

num = re.sub(r'#.*$',""

, phone)

print

("**號碼 : "

, num)

# 移除非數字的內容

num = re.sub(r'\d',""

, phone)

print

("**號碼 : "

, num)

結果:

**號碼 : 2004-959-559

**號碼 : 2004959559

compile 函式用於編譯正規表示式,生成乙個正規表示式( pattern )物件,供 match() 和 search() 這兩個函式使用。

語法格式為:

re.compile(pattern[, flags])

引數:

pattern : 乙個字串形式的正規表示式

flags 可選,表示匹配模式,比如忽略大小寫,多行模式等,具體引數為:

re.i 忽略大小寫

re.l 表示特殊字符集 \w, \w, \b, \b, \s, \s 依賴於當前環境

re.m 多行模式

re.s 即為』 . 『並且包括換行符在內的任意字元(』 . 『不包括換行符)

re.u 表示特殊字符集 \w, \w, \b, \b, \d, \d, \s, \s 依賴於 unicode 字元屬性資料庫

re.x 為了增加可讀性,忽略空格和』 # '後面的注釋

示例:

>>

>

import re

>>

> pattern = re.

compile

(r'\d+'

)# 用於匹配至少乙個數字

>>

> m = pattern.match(

'one12twothree34four'

)# 查詢頭部,沒有匹配

>>

>

print

( m )

none

>>

> m = pattern.match(

'one12twothree34four',2

,10)# 從'e'的位置開始匹配,沒有匹配

>>

>

print

( m )

none

>>

> m = pattern.match(

'one12twothree34four',3

,10)# 從'1'的位置開始匹配,正好匹配

>>

>

print

( m )

# 返回乙個 match 物件

<_sre.sre_match object at 0x10a42aac0

>

>>

> m.group(0)

# 可省略 0

'12'

>>

> m.start(0)

# 可省略 0

3>>

> m.end(0)

# 可省略 0

5>>

> m.span(0)

# 可省略 0(3

,5)

python3正規表示式

正規表示式,又稱規則表示式。英語 regular expression,在 中常簡寫為regex regexp或re 電腦科學的乙個概念。正規表示式通常被用來檢索 替換那些符合某個模式 規則 的文字。正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元 及這些特定字元的組合,組成乙個...

Python3 正規表示式

常用的匹配模式 正規表示式是乙個特殊的字串行,它能幫助你方便的檢查乙個字串是否與某種模式匹配。re 模組使 python 語言擁有全部的正規表示式功能。re.match函式 re.match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match 就返回none。re.match...

Python3 正規表示式

正規表示式是乙個特殊的字串行,它能幫助你方便的檢查乙個字串是否與某種模式匹配。python 自1.5版本起增加了re 模組,它提供 perl 風格的正規表示式模式。re 模組使 python 語言擁有全部的正規表示式功能。compile 函式根據乙個模式字串和可選的標誌引數生成乙個正規表示式物件。該...