正規表示式

2021-10-02 15:44:27 字數 3651 閱讀 4193

正規表示式的常用操作符

操作符說明例項

.表示任何單個字元

[ ]字符集,對單個字元給出取值範圍

[abc]表示a、b、c,[a-z]表示a到z單個字元

[^]非字符集,對單個字元給出排除範圍

[^abc]表示非a或b或c的單個字元

*前乙個字元0次或無限次擴充套件

abc*表示ab、abc、abcc、abccc等

+前乙個字元1次或無限次擴充套件

abc+表示abc、abcc、abccc等

?前乙個字元0次或1次擴充套件

abc?表示ab、abc

丨左右表示式任意乙個

abc丨def表示abc、def

擴充套件前乙個字元m次

abc表示abbc

擴充套件前乙個字元m至n次(含n次)

abc表示abc、abbc

^匹配字串開頭

^abc表示abc且在乙個字串開頭

$匹配字串結尾

abc$表示abc且在乙個字串結尾

( )分組標記,內部只能使用丨操作符

(abc)表示abc,(abc丨def)表示abc、def

\d數字,等價於[0-9]

\w單詞字元,等價於[a-za-z0-9_ ]

正規表示式語法例項

正規表示式

對應字串

p(y丨yt丨yth丨ytho)?n

『py』、『pyn』、『pytn』、『pythn』、『python』

python+

『python』、『pythonn』、『pythonnn』…

py[th]on

『python』、『pyhon』

py[^th]?on

『pyon』『pyaon』、pybon』、『pycon』…

pyn『pn』、『pyn』、『pyyn『、『pyyyn』

正規表示式的表示型別

例如

r'[1-9]\d':郵編

r'\d-\d|\d-\d':手機號

raw string是不包含轉義符的字串

-string型別,更繁瑣

例如:

'[1-9]\\d'

'\\d-\\d|\\d-\\d'

需要增加額外的'\'

函式

說明re.search()

在乙個字串中搜尋匹配正規表示式的第乙個位置,返回match物件

re.match()

從乙個字串的開始位置起匹配正規表示式,返回match物件

re.findall()

搜尋字串,一列表型別返回全部能匹配的子串

re.spilt()

將乙個字串按照正規表示式匹配結果進行分割,返回列表型別

re.finditer()

搜尋字串,返回乙個匹配結果的迭代型別,每個迭代元素是match物件

re.sub()

在乙個字串中替換所有匹配正規表示式的子串,返回替換後的字串

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

#在乙個字串中搜尋匹配正規表示式的第乙個位置,返回match的物件

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

#從乙個字串的開始位置起匹配正規表示式,返回match物件

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

#搜尋字串,一列表型別返回全部能匹配的子串

re.spilt(pattern,string,maxsplit=

0,flags=0)

#將乙個字串按照正規表示式匹配結果進行分割,返回列表型別

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

#搜尋字串,返回乙個匹配結果的迭代型別,每個迭代元素是match物件

re.sub(pattern,repl,string,count=

0,flags=0)

#在乙個字串中替換所有匹配正規表示式的子串,返回替換後的字串

·pattern:正規表示式的字串或原生字串表示

·string:待匹配字串

·flags:正規表示式使用時的控制標記

·maxsplit:最大分割數,剩餘部分作為最後乙個元素輸出

·repl:退還匹配字串的字串

·count:匹配的最大替換次數

-flags

常用標記

說明re.i re.ignorecase

忽略正規表示式的大小寫,[a-z]能夠匹配小寫字元

re.m re.multiline

正規表示式中的^操作符能夠將給定字元轉的每行當做匹配開始

re.s re.dotall

正規表示式中的.操作符能夠匹配所用字元,預設匹配除換行外的所有字元

re庫的不同用法

#函式式用法:一次性操作

rst=re.search(r'[1-9]\d'

,'bit 100081'

)#物件導向用法:編譯後的多次操作

pat=re.

compile

(r'[1-9]\d'

)rst=pat.search(

'bit 100081'

)

regex=re.

compile

(pattern,flags=0)

#將正規表示式的字串形式編譯成正規表示式物件

# ·pattern:正規表示式的字串或者原生字串

# ·flags:正規表示式使用時的控制標記

match物件的屬性屬性

說明.string

待匹配的文字

.re匹配時使用的pattern物件(正規表示式)

.pos

正規表示式搜尋文字的開始位置

.endpos

正規表示式搜尋文字的結束位置

match物件的方法方法

說明.group(0)

獲得匹配後的字串

.start( )

匹配字串在原始字串的開始位置

.end( )

匹配字串在原始字串的結束位置

.span( )

返回(.start( ),.end( ))

re庫預設採用貪婪匹配,即輸出匹配最長的子串

如何輸出最短的子串?

最小匹配操作符

操作符說明*?

前乙個字元0次或無限次擴充套件,最小匹配

+?前乙個字元1次或無限次擴充套件,最小匹配

??前乙個字元0次或1次擴充套件,最小匹配

?擴充套件前乙個字元m至n次(含n),最小匹配

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...