Python正則匹配 -> 模組和基本函數

來源:互聯網
上載者:User

PythonRegex - re模組


1. findall函數

>>> import re

>>> s='123abc456eabc789'

>>> re.findall(r’abc’,s) 結果:['abc', 'abc']

返回結果是一個列表,中間存放的是符合規則的字串,如果沒有符合規則的字串被找到,就返回一個空列表。


2. compile函數

>>> s='111,222,aaa,bbb,ccc333,444ddd123abc456eabc789'

>>> rule=r’\b\d+\b’

>>> compiled_rule=re.compile(rule)

>>> compiled_rule.findall(s) 結果:['111', '222']

直接使用findall ( rule , target )的方式來匹配字串,一次兩次沒什麼,如果是多次使用的話,由於正則引擎每次都要把規則解釋一遍,而規則的解釋又是相當費時間的,所以這樣的效率就很低了。如果要多次使用同一規則來進行匹配的話,可以使用re.compile函數來將規則先行編譯,使用編譯過返回的Regular Expression Object或叫做Pattern對象來進行尋找。


compile函數還可以指定一些規則標誌,來指定一些特殊選項,多個選項之間用 ’|’(位或)串連起來。

I      IGNORECASE 忽略大小寫區別

M    MULTILINE  多行匹配。在這個模式下’^’(代表字串開頭)和’$’(代表字串結尾)將能夠匹配多行的情況,成為行首和行尾標記。

>>> s=’123 456\n789 012\n345 678’

>>> rc=re.compile(r’^\d+’)    #匹配一個位於開頭的數字,沒有使用M選項

>>> rc.findall(s)

['123']             #結果只能找到位於第一個行首的’123’


>>> rcm=re.compile(r’^\d+’, re.M)       #使用 M 選項

>>> rcm.findall(s)

['123', '789', '345']  #找到了三個行首的數字


對於‘$’的情況是類似的:

>>> rc=re.compile(r’\d+$’)

>>> rcm=re.compile(r’\d+$’, re.M)

>>> rc.findall(s)

['678']

>>> rcm.findall(s)

['456', '012', '678'] 還有一些其他規則標誌,參考連結: http://blog.csdn.net/smilelance/article/details/6529950


3. match函數與search函數

match( rule , targetString [,flag] )

search( rule , targetString [,flag] ) 第一個參數是正則規則,第二個是目標字串,第三個是選項(同compile函數的選項)


返回結果不是字串列表,而是一個MatchObject (如果匹配成功的話),通過操作這個matchObject,來得到更多的資訊;如果匹配不成功,它們則返回一個NoneType。

所以,一般的使用規則是:

>>> m=re.match( rule , target )

>>> if m:                       #必需先判斷是否成功

        doSomething

兩個函數的區別:

match從字串的開頭開始匹配,如果開頭位置沒有匹配成功,就算失敗;而search會跳過開頭,繼續向後尋找是否有匹配的字串。


4. 其它函數

參考連結: http://blog.csdn.net/smilelance/article/details/6529950


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.