python re模組使用技巧總結

2021-09-22 20:17:00 字數 2329 閱讀 9187

import re

#使用(?p...) 或者 (?p=name)來標記變數,使用\g的方式來檢索

test =

'110-120'

result = re.sub(r'1(?p[0-9]+)'

,'a\g'

,test)

print

(result)

#使用\+數字來索引已經標記的分組

test =

'aabb-aabb'

results = re.findall(r'([a-z]+)-(\1)'

,test)

print

(results)

# (?i)忽略大小寫

th = re.

compile

(r'(?i)th'

)results = re.finditer(th,

'the quickest way is through this tunnel'

)for result in results:

print

(result.group())

print

(result.start())

print

(result.end())

print

(result.span())

#(?im) 忽略大小寫且匹配多行

th = re.

compile

(r'(?im)th'

)results = re.findall(th,

'''the quickest

way is through

this tunnel

''')

print

(results)

#(?s)使得.號可以匹配\n

results = re.findall(r'th.*'

,'''the first line

the second line

the third line

''')

print

(results)

results = re.findall(r'(?s)th.*'

,'''the first line

the second line

the third line

''')

print

(results)

#使用(?m)跨行來查詢,第乙個例子將找不到第三行的th,因為這裡不認為第三行是乙個行開頭,而是

#這三行的一部分,換句話說,預設情況下查詢將這三行作為乙個整體,而不是每一行作為乙個部分

#依次去查詢

results = re.findall(r'^th'

,'''the first line

another line

the third line

''')

print

(results)

results = re.findall(r'(?m)^th'

,'''the first line

another line

the third line

''')

print

(results)

#(?x)可以讓正規表示式更加易懂,忽略所有的空白字元

#想要使用空白字元可以用字元組實現,例如空格[ ]

email = re.

compile

(r'''(?x)

[\w\.]+

@[\w\.]+

\.com

''')result = re.match(email,

'[email protected]'

)if result:

print

(result.group())

#re.sub 可以通過指定第四個引數來指定替換的次數,預設所有匹配的位置都會匹配

print

(re.sub(r'aabb'

,'ccdd'

,'aabb-aabb-aabb'))

print

(re.sub(r'aabb'

,'ccdd'

,'aabb-aabb-aabb',1

))#re.split可以指定多個分隔符,並通過第三個引數來指定分割的次數

print

(re.split(

';|-|\+'

,'a;b-c+d'))

print

(re.split(

';|-|\+'

,'a;b-c+d',1

))

python re模組簡單使用

import re 匯入re模組regex compile pattern,flags 0 功能 生成正規表示式物件 引數 pattern 正規表示式 flags 功能標誌位,豐富正規表示式的匹配功能 返回值 返回正規表示式物件 re.findall pattern,string,flags 功能 ...

python re模組findall使用

今天練習re模組時候出現了乙個很奇怪的問題,同樣的正規表示式用re.search 與用re.compile findall 匹配出來的結果不一致。很是奇怪,故此記錄一下,防止以後碰到類似情況解決不了。1 usr bin env python32 author taoke 3import re4 st...

Python re 正則模組

有些字元比較特殊,它們和自身並不匹配,而是會表明應和一些特殊的東西匹配,或者它們會影響到 re 其它部分的重複次數,它們叫元字元。其中 m 和 n 是十進位制整數。該限定符的意思是至少有 m 個重複,至多到 n 個重複。舉個例子,a b 將匹配 a b a b 和 a b 它不能匹配 ab 因為沒有...