Python 正規表示式 筆記

2021-10-02 09:25:08 字數 2911 閱讀 1499

re 庫的 match 物件

re 庫的貪婪匹配和最小匹配

re, regex, regular expression 用簡潔形式表示了一組字串的特徵模式,通用的字串表達框架。

用前需要編譯,正規表示式由字元和操作符組成。

. 表示任何單個字元

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

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

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

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

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

| 左右表示式任意乙個

擴充套件前乙個字元m次

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

^ 匹配字串開頭

$ 匹配字串結尾

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

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

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

^[a-za-z]+$ 由26個字母組成的字串

^[a-za-z0-9]+$ 由26個字母和數字組成的字串

^-?\d$ 整數形式的字串

^[0-9]*[1-9]

[0-9]*$ 正整數形式的字串

[\u4e00-\u9fa5] 匹配中文字元

\d-\d

|\d-\d 國內**號碼,010-68912536

\d.\d.\d.\d

\d.\d.\d,\d

# 不夠準確

255.255.255.255

0-99: [1-9]?[0-9]

[1-9]?\d

100-199: 1[0-9]

1\d200-249: 2[0-4]

[0-9] 2[0-4]\d

250-255: 25[0-5]

四位 (.)()

(([1-9]?\d | 1\d

| 2[0-4]\d | 25[0-5]

).)(

[1-9]?\d | 1\d

| 2[0-4]\d | 25[0-5]

)

python 的標準庫 正規表示式的表示型別: 原生字串 raw string : r』text』 原生字串是不包含轉譯字元的字串,當正規表示式包含轉義字元時,使用raw string.

import re

match = re.search(r'[1-8]\d'

,'bit 188888'

)if match:

print

(match.group(0)

)

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

,'bit 100299'

)if match:

pring(match.group(0)

)print

(match.group(0)

)

ls = re.findall(r'[1-9]\d'

,'bit 123456 234567'

)print

(ls)

re.split(r'[1-9]\d'

,'bit 788222 jih 892789 hi'

)

for m in re.finditer(r'[1-9]\d'

,'bit 190290 yub223423'):

if m:

print

(m.group(0)

)

re.sub(r'[1-9]\d'

,':zipcode'

,'bit123456 tsu100022'

)

上述是 函式式用法,一次性操作。 物件導向用法,編譯後多次操作

match 物件,一次匹配的結果

import re

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

,'bij 123456 hui123456'

)if m:

print

(match.group(0)

)print

(m.string)

print

(m.re)

print

(m.pos)

print

(m.endpos)

print

(m.start())

print

(m.end(

),m.span(

))

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

m = re.search(r'py.*n'

,'pythonnnn'

)if m:

print

(m.group(0)

)

m = re.search(r'py.*?n'

,'pyanbn***n'

)if m:

print

(m.group(0)

)

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

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

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

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

Python 正規表示式筆記

python 正規表示式筆記 正規表示式的先行斷言 lookahead 和後行斷言 lookbehind 正規表示式的先行斷言和後行斷言一共有4種形式 pattern 零寬正向先行斷言 zero width positive lookahead assertion pattern 零寬負向先行斷言 ...

Python筆記 正規表示式

1 如果直接給出字元,就是精確匹配。用 d可以匹配乙個數字,w可以匹配乙個字母或數字,可以匹配任意字元 00 d 可以匹配 007 但無法匹配 00a d d d 可以匹配 010 w w d 可以匹配 py3 py.可以匹配 pyc pyo py 2 要匹配變長的字元,在正規表示式中,用 表示任意...

python正規表示式筆記

更新中 正規表示式 regular expression 也簡稱regex,是用於簡潔表達一組字串的表示式。例1 對於字串組 pn pyn pytn pythn python 可以用正規表示式p y yt yth ytho n表示 例2 對於字串組 py pyy pyyy pyyyy pyyyy 可...