一、簡單介紹
正則表達式是一種小型的、高度專業化的編程語言,并不是python中特有的,是許多編程語言中基礎而又重要的一部分。在python中,主要通過re模塊來實現。
正則表達式模式被編譯成一系列的字節碼,然后由用c編寫的匹配引擎執行。那么正則表達式通常有哪些使用場景呢?
比如為想要匹配的相應字符串集指定規則;
該字符串集可以是包含e-mail地址、Internet地址、電話號碼,或是根據需求自定義的一些字符串集;
當然也可以去判斷一個字符串集是否符合我們定義的匹配規則;
找到字符串中匹配該規則的部分內容;
修改、切割等一系列的文本處理;
......
二、特殊符號和字符(元字符)
這里介紹常見的一些元字符,它給予正則表達式強大的功能和靈活性。表2-1列出了比較常見的符號和字符。
三、正則表達式
1、使用 compile()函數編譯正則表達式
由于python代碼最終會被翻譯成字節碼,然后在解釋器上執行。所以對于我們代碼中經常要用到的一些正則表達式進行預編譯,執行起來會更加便捷。
re模塊中的大多數函數和已經編譯的正則表達式對象和正則匹配對象的方法同名并且具有相同的功能。
示例:
>>> import re>>> r1 = r'bugs' # 字符串前加"r"反斜杠就不會被任何特殊方式處理,這是個習慣,雖然這里沒用到>>> re.findall(r1, 'bugsbunny') # 直接利用re模塊進行解釋性地匹配['bugs'] >>>>>> r2 = re.compile(r1) # 如果r1這個匹配規則你會經常用到,為了提高效率,那就進行預編譯吧>>> r2 # 編譯后的正則對象<_sre.SRE_Pattern object at 0x7f5d7db99bb0>>>>>>> r2.findall('bugsbunny') # 訪問對象的findall方法得到的匹配結果與上面是一致的['bugs'] # 所以說,re模塊中的大多數函數和已經編譯的正則表達式對象和正則匹配對象的方法同名并且具有相同的功能
re.compile()函數也接受可選的標志參數,常用來實現不同的特殊功能和語法變更。這些標志也可以作為參數適用于大多數re模塊函數。這些標志可以用操作法(|)合并。
示例:
>>> import re>>> r1 = r'bugs'>>> r2 = re.compile(r1,re.I) # 這里選擇的是忽略大小寫的標志,完整的是re.IGNORECASE,這里簡寫re.I>>> r2.findall('BugsBunny')['Bugs']<br><br># re.S 使.匹配換行符在內的所有字符<br># re.M 多行匹配,英雄^和$<br># re,X 用來使正則匹配模式組織得更加清晰
新聞熱點
疑難解答