Python正規則表示式

2021-10-03 08:04:37 字數 2970 閱讀 1525

導包:

import re
compile、match、search、findall、sub、split

re.compile(pattern[, flags])

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

成功返回乙個匹配的物件,否則返回none(從起始位置開始)

成功返回乙個匹配的物件,否則返回none。(掃瞄整個字串並返回第乙個成功的匹配)

print(re.search('www','www.swww.com'))#(0,3)

print(re.search('com','www.swww.com'))#(9,12)

findall(string[, pos[, endpos]]) 成功返回乙個列表,沒有則none

print(re.findall('www','wwww.swww.com')) #['wwww','www']
match 和 search 是匹配一次 findall 匹配所有

re.sub(pattern, repl, string, count=0, flags=0)用於替換字串中的匹配項。

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

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

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

s='a a1 a2 a3'

pattern=r'\d'

repl1='99'

m=re.sub(pattern,repl1,s)

print(m)

def func(pattern):

num=pattern.group()

sum=int(num)+1

return str(sum)

m=re.sub(pattern,func,s)

print(m)

#a a99 a99 a99

#a a2 a3 a4

re.split(pattern, string[, maxsplit=0, flags=0])按照能夠匹配的子串將字串分割後返回列表

maxsplit 分隔次數,maxsplit=1 分隔一次,預設為 0,不限制次數。

m=re.split(r',','a,a1,a2,a3')

print(m)

#['a', 'a1', 'a2', 'a3']

. 任意字元除\n

^ 開頭

$ 結尾

範圍 [0-9][a-z]

預定義\s 空白 (空格)

\b 邊界

\d 數字

\w 字母[0-9a-za-z_]

大寫反面 \d 非數字

量詞* >=0

+ >=1

? 0,1

固定m位

>=m

>=m <=n

text='a1anb22bgir33333f'

pattern=re.compile('[a-z][0-9]+[a-z]')

print(pattern.findall(text))

貪婪與非貪婪

量詞預設是貪婪,通過?變成非貪婪

m=re.match(r'a(\d+)','a123a') #a123

m=re.match(r'a(\d+?)','a123a') #a1

分組

(w|w|w)與[123]

re.match(r'\w@(163|qq|126)\.(com|cn)$',email)
phone='010-12345678'

m=re.match(r'(\d|\d)-(\d)$',phone)print(m.group()) #分組獲取匹配的內容print(m.group(1))print(m.group(2))

不引用分組的內容

msg=''

m=re.match(r'<[a-za-z0-9]+>(.+)$',msg)

print(m.group(1))#11111

引用分組匹配內容:

1.number \number 

msg='

'm=re.match(r'<([a-za-z0-9]+)><([a-za-z0-9]+)>(.+)$',msg)

print(m.group(1))#html

print(m.group(2))#h1

print(m.group(3))#1111

2.?p《名字》 ?p=名字

msg='

'm=re.match(r'<(?p[a-za-z0-9]+)><(?p[a-za-z0-9]+)>(.+)$',msg)

print(m.group(1))#html

print(m.group(2))#h1

print(m.group(3))#1111

egrep 擴充套件正規則表示式 (筆記)

grep 正規則表示式分為 basic regexp 基本正規則表示式 extended regexp 擴充套件正規則表示式 grep a 2 表示匹配到的字元的後兩行也顯示 grep b 2 表示匹配到的字元的前兩行也顯示 grep c 2 表示匹配到的字元的前後兩行都顯示 字元匹配 表示任意乙個...

規則表示式的常用表示式

為了能夠更好地理解如何在c 環境中使用規則表示式,我寫出一些對你來說可能有用的,這些表示式在其他的環境中都被使用過,希望能夠對你有所幫助。羅馬數字 string p1 m d?c c dm l?x x lc v?i i vx string t1 vii match m1 regex.match t1...

正規表示式 規則表示式

今天學習了正規表示式的一些基礎知識,1.概念 首先了解了一下正規表示式的含義 一些便於計算機識別的規則,能夠快速方便地對字元進行操作。而對於計算機而言,也有一寫規則表示式,它是能令計算機讀懂的 所以對我們來說看起來比較費勁 也相當於計算機的常識,一遇到就知道你要幹什麼。2.建立正則物件 var re...