python正規表示式

2021-08-10 19:37:32 字數 2526 閱讀 8844

常用正規表示式

. :匹配任意乙個字元

^ :匹配以什麼開頭的字元,如果放在中括號中表示取反,如 ^abc 表示匹配以 abc 開頭的字元,[^abc] 表示匹配 abc 之外的字元

:匹配以什麼結尾的字元*:匹配零個或多個星號前面的字元,如可以匹配、、、等等如可以匹配、、、等等,如abc?只能匹配ab、abc :用於轉義,比如我要匹配 這個字元,但是用於匹配以什麼結尾的字元,因此我就可以用來匹配用於匹配以什麼結尾的字元,因此我就可以用$來匹配 這個字元

| :表示'或者',比如 ab|cd 可以匹配 'ab' 或 'cd'

{} :匹配指定個花括號前面的字元,如 ab 可以匹配 abb ,也可以是乙個範圍,如 ab 可以匹配 ab 、abb 、abbb 、abbbb

:匹配中括號中的任意乙個字元,如 [0-9] 表示匹配 0~9 中的任意乙個數字

() :如果用括號括起來表示乙個整體,如 (ab) 把 ab 當成乙個整體,只能匹配 abab ,另外還有(?p....) 的形式,我們

知道用括號括起來的表示乙個整體,比如 (abcdefg) 是乙個整體,但如果括號裡面的內容很長很長,那麼我們訪問這個整體的時候

是通過給這個整體取個別名的方式,即 (?p....) 的方式,如 (?p(abcdefg)) 表示把 (abcdefg) 這個整體取個別名 a ,

當我們訪問的時候訪問 a 就相當於訪問 (abcdefg) ,在正則中這通常稱為分組

\d :匹配任何數字,相當於 [0-9]

\d :匹配非數字字元,相當於 [^0-9]

\s :匹配任何空白字元,如空格、tab製表符、換行符等

\s :匹配任何非空白字元

\w :匹配所有的字母和數字,相當於 [a-za-z0-9]

\w :匹配所有的非字母和數字,相當於[^a-za-z0-9]

re正則物件和正則匹配效率比較

re.findall() :用於從乙個字串中匹配指定的字元

findall(string[, pos[, endpos]]) 

搜尋string,以列表形式返回全部能匹配的子串

import re

p1 = re.compile(r'\d+')

a_str = 'one1two222three33four4'

#正則物件的split方法,使用正則匹配進行分割字串

#最後是以列表的形式返回

print(p1.split(a_str))

#正則物件的findall方法,來查詢符合物件的子字串

#最後是以列表的形式返回

print(p1.findall(a_str))

#finditer 每個返回值都是是乙個物件,用group()方法檢視,

for i in p1.finditer(a_str):

print(i.group())

sub方法

sub(repl, string[, count])

使用repl替換string中每乙個匹配的子串後返回替換後的字串。

當repl是乙個字串時,可以使用\id或\g、\g引用分組,但不能使用編號0。

當repl是乙個方法時,這個方法應當只接受乙個引數(match物件),並返回乙個字串用於替換(返回的字串中不能再引用分組)。

count用於指定最多替換次數,不指定時全部替換。

import re

p = re.compile(r'(\w+) (\w+)')

s = 'i say,hello word!'

print(p.sub(r'\2 \1',s))

def func(m):

return m.group(1).title() + ' ' +m.group(2).title()

print(p.sub(func,s)

match匹配物件

match物件是一次匹配的結果,包含了很多關於此次匹配的資訊,可以使用match提供的可讀屬性或方法來獲取這些資訊。上面的過程中多次使用了match物件,呼叫了他的group()和groups()等方法。

import re

prog = re.compile(r'(?pabc)(\w*)(?p=tagname)')

result = prog.match('abclfjlad234sjldabc')

# finiter 迭代以後每個物件都是乙個matche物件

print(dir(result)) #檢視match方法

print(result.group()) #group方法

print(result.groups())

print(result.group(2))

print(result.group(1))

print('####'*10 + 'tagname' + '####'*10)

print(result.group('tagname'))

#matche物件的group返回乙個元組,下標是以1開頭

print(result.groupdict())

python正規表示式元字元 正規表示式

字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

Python 正規表示式

1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...

Python正規表示式

學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...