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