第11.25节 Python正则表达式编译re.compile及正则对象使用
生活随笔
收集整理的這篇文章主要介紹了
第11.25节 Python正则表达式编译re.compile及正则对象使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、 引言
在《第11.2節 Python 正則表達式支持函數概覽》介紹了re模塊的主要函數,在《第11.3節 Python正則表達式搜索支持函數search、match、fullmatch、findall、finditer》重點介紹了幾個搜索函數。這些介紹的搜索函數都是直接使用正則表達式去匹配搜索文本,實際上re模塊還支持將正則表達式先編譯再搜索匹配,這種先編譯后搜索在同一個正則表達式多次去執行匹配時可以提高匹配執行效率。
二、 re.compile函數
pattern是要匹配的正則表達式,flags是在《第11.2節 Python 正則表達式支持函數概覽》介紹的搜索標記。
返回結果是一個類型為re.Pattern的對象,該對象稱為 “正則表達式對象”或“正則對象”。該對象可以直接使用自己的方法search、match等進行搜索和匹配。
三、 正則對象Pattern的屬性
四、 正則對象的方法
這個方法與re.search函數功能類似,掃描整個 string 尋找第一個匹配位置, 并返回一個相應匹配對象。如果沒有匹配,就返回 None。不過比re.search函數多了兩個可選參數,可選的第二個參數 pos 給出了字符串中開始搜索的位置索引,默認為 0,如果大于0,對于元字符 ‘^’ 和特殊序列\A樣式字符匹配字符串真正的開頭,或換行符后面的第一個字符,但不會匹配索引規定開始的位置。
可選參數 endpos 限定了字符串搜索的結束;當endpos比搜索文本長度小的時候,字符串末尾的匹配如’$’會匹配到endpos對應位置,也就是實際搜索文本變成了原搜索文本從開始到endpos位置切片對應的新搜索文本。
案例:
>>> str='Learning Python with LaoYuan123' >>> str[22:29] 'LaoYuan' >>> patstr='LaoYuan$' >>> pat=re.compile(patstr) >>> pat.search(str,endpos=29) <re.Match object; span=(22, 29), match='LaoYuan'> >>>上述案例中搜索文本結尾是123,但指定了結束位置剛好到搜索模式串,因此$最終匹配成功。
該方法與re.match相對應,功能相差不多,從 string 的 開始位置 能夠找到這個正則樣式的任意個匹配,就返回一個相應的 匹配對象。如果不匹配,就返回 None 。可選參數 pos 和 endpos 與 search() 含義相同。
如:
該方法與re.fullmatch()函數相對應,如果整個 string 匹配這個正則表達式,就返回一個相應的 匹配對象 。 否則就返回 None。可選參數 pos 和 endpos 與 Pattern.search() 含義相同。
案例:
等價于 re.split 函數,只是使用了編譯后的正則對象來調用。
案例:
類似函數 re.findall函數,只是使用了正則對象來調用,比re.findall多了兩個可選參數 pos 和 endpos用于限制搜索范圍,這兩個參數的作用與Pattern.search方法的這兩個參數一樣。
案例:
類似函數re.finiter() , 使用了編譯后的正則對象來調用,比re.finiter()多了兩個可選參數 pos 和 endpos用于限制搜索范圍,這兩個參數的作用與Pattern.search方法的這兩個參數一樣。
案例:
等價于 re.sub函數,使用了編譯后的正則對象來調用。
案例:
等價于 re.subn() 函數,使用了編譯后的正則對象來調用。
老猿Python,跟老猿學Python!
博客地址:https://blog.csdn.net/LaoYuanPython
請大家多多支持,點贊、評論和加關注!謝謝!
總結
以上是生活随笔為你收集整理的第11.25节 Python正则表达式编译re.compile及正则对象使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据结构(C语言描述)】环形队列
- 下一篇: 日本图书馆有哪些地方