python中正則表達式與模式匹配
一、前言
在之前找工作過程中,面試時經(jīng)常被問到會不會python,懂不懂正則表達式。心里想:軟件的東西和芯片設計有什么關系?咱也不知道因為啥用這個,咱也不敢問??!在網(wǎng)上搜索到了一篇關于腳本在ASIC領域中應用的文章(原文見參考文獻1),里邊提到了python的用武之地:
本文以《Python編程快速上手——讓繁瑣工作自動化》書中的示例,講述利用python實現(xiàn)文本中特定內(nèi)容提取的方式。
二、提取特定內(nèi)容示例
需求:找出文本中所有的電話號碼和郵件地址。設計方案:在剪貼板的文本中提取出所有與電話號碼和郵件地址格式匹配的字符串。有了需求和設計方案,現(xiàn)根據(jù)電話號碼和郵箱地址格式編寫正則表達式。先來看看程序代碼,再做講解。
PhoneAndEmail.py
此處電話號碼的格式是:三個數(shù)字組成的區(qū)號(可選),三個數(shù)字,四個數(shù)字,任意數(shù)空格+ext/x/ext.+任意數(shù)空格+2到5個數(shù)字組成的分機號(可選)。每個部分間以“-”號連接。郵箱地址格式:由字母、數(shù)字以及_%+-符號組成的用戶名,@符號以及.后的域名,域名由2-4個字母和數(shù)字集合組成。根據(jù)上述模式可編寫對應的正則表達式。
python的模式匹配有一個簡單固定的套路,import導入re包,regex = re.compile('''<正則表達式>''
')。<模式匹配的內(nèi)容列表> = regex.findall(<待搜索字符串>)。三步搞定。編寫正則表達式時,在字符串前加r防止字符轉義。將各個部分分組并換行以提高代碼的可讀性,此時需要將re.VERBOSE作為re.compile()函數(shù)的第二個參數(shù)傳入來忽略表達式中的空白和換行。
三、運行結果
復制代碼首部注釋掉的文本,然后運行程序。結果如下:
前兩行打印出了匹配內(nèi)容的列表,之后以自定義的統(tǒng)一格式打印欲搜索的內(nèi)容。程序運行結果正確。本文以一個小例子測試了python正則表達式提取文本特定內(nèi)容的功能,之后想嘗試利用python自動生成verilogHDL中module的例化模板。
總結
以上所述是小編給大家介紹的python正則表達式匹配,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
ORM Django 終端打印 SQL 語句實現(xiàn)解析
這篇文章主要介紹了ORM Django 終端打印 SQL 語句實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08