python筆記 正規表示式(2)

2021-08-16 05:42:51 字數 3751 閱讀 3551

re模組:核心函式和方法

import re

m=re.match(『foo』,』foo』) #模式匹配字串

m.group() #返回整個匹配物件

out[10]: 『foo』

m=re.match(『foo』,』bar』) #模式並不能匹配字串 m.group() 這個就會出現報錯了,跑出attributeerror異常,列印一下是none; re.match(『foo』,』food on the table』).group() out[13]: 『foo』

m=re.match(『foo』,』seafood』)

(m.groups() #匹配失敗丟擲異常

re.search(『foo』,』seafood』).group() #搜尋成功返回第一次出現的相應字串

out[18]: 『foo』

bt='bat|bet|bit'     #正規表示式模式:bat、bet、bit

m=re.match(bt,'bat') #'bat'是乙個匹配

m.group()

out[19]: 'bat'

*****************************************

bt='bat|bet|bit' #正規表示式模式:bat、bet、bit

m=re.match(bt,'blt') #'blt'沒有匹配,丟擲異常

m.group()

*****************************************

bt='bat|bet|bit' #正規表示式模式:bat、bet、bit

m=re.match(bt,'he bit me!') #'bit'沒有匹配,丟擲異常

m.group()

*****************************************

bt='bat|bet|bit' #正規表示式模式:bat、bet、bit

m=re.search(bt,'he bit me!') #'bit'被搜所到

m.group()

out[22]: 'bit'

anyend='.end'

re.match(anyend,'bend').group() #點好匹配'b'

out[24]: 'bend'

*****************************************

anyend='.end'

re.match(anyend,'end').group() #不匹配任何字元,丟擲異常

*****************************************

re.search('.end','the end.').group()

out[25]: ' end'

import  re

re.findall('car','car')

out[4]: ['car']

"*****************************************"

re.findall('car','scary')

out[6]: ['car']

"*****************************************"

re.findall('car','carry the barcard to the car')

out[5]: ['car', 'car', 'car']

"*****************************************"

it =re.finditer(r'(th\w+) and (th\w+)',s,re.i)

for match in it:

print(match.groups())

('this', 'that')

"*****************************************"

match.group(1)

out[19]: 'this'

"*****************************************"

match.group(2)

out[20]: 'that'

使用sub()和subn()搜尋與替換

re.sub('x','mr. smith','attn:x\n\ndear x,\n')

out[33]: 'attn:mr. smith\n\ndear mr. smith,\n'

"*****************************************"

re.subn('x','mr. smith','attn:x\n\ndear x,\n')

out[34]: ('attn:mr. smith\n\ndear mr. smith,\n', 2)

"*****************************************"

print(re.sub('x','mr. smith','attn:x\n\ndear x,\n'))

attn:mr. smith

dear mr. smith,

"*****************************************"

re.sub('[aa]','x','abcdef')

out[36]: 'xbcdef'

"*****************************************"

re.subn('[aa]','x','abcdef')

out[37]: ('xbcdef', 1)

"*****************************************"

re.sub(r'(\d)/(\d)/(\d|\d)',r'\2/\1/\3','2/20/91')

out[30]: '20/2/91'

"*****************************************"

re.sub(r'(\d)/(\d)/(\d|\d)',r'\2/\1/\3','2/20/1991')

out[31]: '20/2/1991'

re.split(':','str1:str2:str3')

out[42]: ['str1', 'str2', 'str3']

"*****************************************"

data = ('mountain view, ca 94040',

'sunnyvale, ca',

'los altos, 94023',

'cupertino 95014',

'palo alto ca', )

for datum in data:

print(re.split(', |(?= (?:\d|[a-z])) ',datum))

['mountain view', 'ca', '94040']

['sunnyvale', 'ca']

['los altos', '94023']

['cupertino', '95014']

['palo alto', 'ca']

Python 正規表示式 2

coding utf 8 匯入re模組 import re 原始字串 c c desktop print c 假設desktop的父路徑是c 我們如何匹配到呢 result re.match c c print result.group 但是這樣很複雜 容易讓人迷 所以在python 中提供乙個r表...

Python正規表示式學習筆記(2)

與大多數程式語言相同,正規表示式裡使用 作為轉義字元,這就可能造成反斜槓困擾。假如你需要匹配文字中的字元 那麼使用程式語言表示的正規表示式裡將需要4個反斜槓 前兩個和後兩個分別用於在程式語言裡轉義成反斜槓,轉換成兩個反斜槓後再在正規表示式裡轉義成乙個反斜槓。python裡的原生字串很好地解決了這個問...

Python 正規表示式筆記

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