python正規表示式

2021-08-01 22:31:46 字數 2404 閱讀 9455

模組:re

import re

方法主要有:

p=re.compile(r"abc")      返回pattern物件

p.match("str")    返回str中符合該pattern物件的字串

#p.search("str")   返回str中符合該pattern物件的字串

#p.findall("str")   返回list物件

#p.finditer("str")  返回迭代器物件

區別:match方法必須要求從str開頭匹配成功

search方法只要在str中匹配成功就返回第乙個匹配成功的字串

findall返回所有匹配成功的字串,返回物件為list

finditer與findall類似,只不過是用next()方法訪問內容

match、search方法都需要group()方法列印輸出或者用span方法列印位置,例如(0,

3)也可直接使用re

.match

(pattern

,string

,flags=0

)、re

.search

(pattern

,string

,flags=0

)直接匹配字串

匹配失敗會返回none

貪婪模式和非貪婪模式:

例子:>>> p=re.compile('[abc]')

>>> print p.findall('abcabc')

['abc', 'abc']

>>> p=re.compile('[abc]?')

>>> print p.findall('abcabc')

['ab', 'ca', 'bc']

例中問號就是切換為非貪婪模式,預設為貪婪模式

數量詞(*、+、、)這些後面加問號就是切換非貪婪模式

替換:re

.sub

(pattern

,repl

,string

,count=0

,flags=0

) 引數:

匿名分組(group方法):

>>> import re

>>> p=re.compile('abc')

>>> p=re.compile('(a)b(c)')

>>> m=p.match('abcdef')

>>> m.groups()

('a', 'c')

>>> m.groupdict()

{}命名分組(groupdict方法):

>>> p=re.compile('(?pa)b(c)')

>>> m=p.match('abcdef')

>>> m.groups()

('a', 'c')

>>> m.groupdict()

>>> p=re.compile('(?pa)b(?pc)')

>>> m=p.match('abcdef')

>>> m.groupdict('age')

>>> (m.groupdict())['age']

'c'>>> (m.groupdict())['name']

'a'>>> p=re.compile(r'(?pa)b(c)

(?p=name)')       #紅色處為引用前邊定義的(?pa),相當於(a)b(c)a

>>> p.match('abcac').group()

'abca'

>>> p.findall()

traceback (most recent call last):

file "", line 1, in

typeerror: required argument 'string' (pos 1) not found

>>> p.findall('abcac')

[('a', 'c')]

>>> p=re.compile(r'(a)b(c)\2')                 # \2指的是引用第二個分組,相當於(a)b(c)c

>>> p.match('abcc')

<_sre.sre_match object at 0x0000000003b258b0>

>>> p.match('abcc').group()

'abcc'

>>> p.match('abcc').groupdict()

{}>>> p.findall('abcc')

[('a', 'c')]

分隔符拆分字串(類似於unix下的awk -f):

>>> p=re.compile('-')

>>> p.split('a-bb-ccc-dddd-eeeee')              #返回list物件

['a', 'bb', 'ccc', 'dddd', 'eeeee']

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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...