當前位置:
首頁 > 知識 > python 淺談正則的常用方法

python 淺談正則的常用方法

點擊上方「

Python開發

」,選擇「置頂公眾號」


關鍵時刻,第一時間送達!






python淺談正則的常用方法覆蓋範圍70%以上




上一次很多朋友寫文字屏蔽說到要用正則表達,其實不是我不想用(我正則用得不是很多,看過我之前爬蟲的都知道,我直接用BeautifulSoup的網頁標籤去找內容,因為容易理解也方便),而是正則用好用精通的很難(看過正則表的應該都知道,裡面符號對應的方法規則有很多,很靈活)。對於接觸編程不久的朋友們來說很可能在編程的過程上浪費很多時間,今天我把經常會用到正則簡單介紹下,如果不是很特殊基本都覆蓋使用。




1.正則的簡單介紹




首先你得導入正則方法 import re 正則表達式是用於處理字元串的強大工具,擁有自己獨立的處理機制,效率上可能不如str自帶的方法,但功能十分靈活給力。它的運行過程是先定一個匹配規則(」你想要的內容+正則語法規則」),放入要匹配的字元串,通過正則內部的機制就能檢索你想要的信息。




2.findall的常用幾種姿勢




基本結構大致: nojoke = re.findall(r』匹配的規則』,』要檢索的願字元串』)   nojoke就是我們最後通過正則返回的結果,re正則findall查找全部r標識代表後面是正則的語句(這樣在代碼多的時候好查閱),下面我們看看幾個例子好深入了解







這段代碼是找出檢索字元串中所有的bi並以列表的形式返回,這個會經常用到計算統一字元出現的次數。繼續看下一個






這裡加了個符號^表示匹配以abi開頭的的字元串返回,也可以判斷字元串是否以abi開始的。







這裡在的用$符號表示以gbi結尾的字元串返回,判斷是否字元串結束的字元串。







這裡[…]的意思匹配括弧內a和f,或者b和f,或者c和f的值返回列表。






「d」是正則語法規則用來匹配0到9之間的數返回列表,需要注意的是11會當成字元串』1』和』1』返回而不是返回』11』這個字元串,切記用不好這裡是大坑。







當然解決的辦法就你要取幾位數就寫幾個d,上面這裡演示取字元串中3位數字,這裡展現了正則靈活一方面。






這裡小d表示取數字0-9,大D表示不要數字,也就是出了數字以外的內容返回。







「w」在正則裡面代表匹配從小寫a到z,大寫A到Z,數字0到9包含前面這三種的如上面列印的一樣.







「W」在正則裡面代表匹配除了字母與數字以外的特殊符號,但這裡斜杠的用法要注意在字元串是轉義符號具體百度去學。






這裡括弧()的用法表示匹配是取括弧內裡面的內容,這裡.*是正則貪婪匹配語法百話點就是貪心利益最大話最大範圍的匹配準則如上圖所示。







這裡加了個問號.*?就是限制它不讓他最大範圍的匹配也叫非貪婪模式匹配。結果是把兩個div內的內容匹配返回。






這裡加re.I(大寫的i)表示匹配無論公的母的大小寫都通吃都要,不然後面有大小寫就會出現上面匹配找不到返回空列表給你。







這裡又搞事了就是n俗稱換行符,一旦換行程序就SB了不認了,所以我們加上了re.S(大寫)這樣代表比匹配包括換行在內的所有字元內容返回,基本你把上面的語法和用法學會後基本70%以上匹配方法全都搞定,當然還有很方法我就不列舉了,大家可以自己去學習(剩下的基本我都很少用到了)。




2.match和search的用法及區別:




re.match 嘗試從字元串的起始位置匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。re.search 掃描整個字元串並返回第一個成功的匹配。來看看代碼就容易理解了。如下:






這裡直接列印結尾加上.span()可以得到匹配字元串的位置以元組tuple返回(起始位置,結束位置),有一個沒寫,因為他返回空加上會編譯器報錯。







是不是一目了然,match只會開頭匹配,找不到就返回None,這裡我沒加.group()是因為返回值是空值我加了編譯器會報錯,search不挑食掃描整個字元串,當然裡面也可以用上面的正則方法去匹配,這裡就不過多介紹了大家可以動手練練。




3.sub替換的用法




sub用於替換字元串中的匹配項,語法一般是re.sub(r』正則匹配規則』,』替換的字元串』,需要檢索的字元串)







這裡很直觀的反應了結果,把#號及後面的字元串替換想要改的字元串。




4.最後福利




在給最後福利之前,希望大家能多練練上面的用法和使用規則,只有多出錯多總結才會積累經驗,最後的福利講給大家幾個常用的郵箱匹配規則如下:







必殺技能最後送了合體多種匹配或者發|用來匹配多個不同的郵箱使用,大家只要用熟以上的方法保守70%以上的地方都能夠使用到,最後聲明只是小弟個人理解分享,大佬們忽略就忽略吧,謝謝,最後還還是老台詞:感謝觀看,下次再見!






  • 來源:Cookie-Fei 




  • www.cnblogs.com/cookie1026/p/6129397.html



  • Python開發整理髮布,轉載請聯繫作者獲得授權


【點擊成為Java大神】

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python開發 的精彩文章:

python logging 日誌模塊以及多進程日誌
python 魔術方法 : 讓自定義類更像內置類型

TAG:Python開發 |