如何理解Python中的正則表達式(3)
今天馬哥教育要跟大家分享的文章是如何理解Python中的正則表達式(3)?通過上節課的學習,我們對Python正則表達式有了更進一步的認識,你有沒有再找些其他練習進行實踐操作呢?今天我們來解決兩個問題,Python入門新手和正在Python學習的小伙伴快來看一看吧,希望能夠對大家有所幫助 !
這節課我們來解決上節課我們留下的練習題以及學習如何用正則表達式來抓取手機號吧。
先來公布上一課習題的答案
\bs\S*?e\b
有的同學給出的答案是"\bs.*?e\b"。測試一下就會發現,有奇怪的'sea sue'和'sweet see'混進來了。既然是單詞,我們就不要空格,所以需要用"\S"而不是"."
昨天有位同學說,用正則表達式匹配出了文件中的手機號。這樣現學現用很不錯。匹配的規則是"1.*?\n",在這個文件的條件下,是可行的。但這規則不夠嚴格,且依賴于手機號結尾有換行符。今天我來講講其他的方法。
匹配手機號,其實就是找出一串連續的數字。更進一步,是11位,以1開頭的數字。
還記得正則第1講里提到的[]符號嗎?它表示其中任意一個字符。所以要匹配數字,我們可以用
[0123456789]
由于它們是連續的字符,有一種簡化的寫法:[0-9]。類似的還有[a-zA-Z]的用法。
還有另一種表示數字的方法
\d
要表示任意長度的數字,就可以用
[0-9]*
或者
\d*
但要注意的是,*表示的任意長度包括0,也就是沒有數字的空字符也會被匹配出來。一個與*類似的符號+,表示的則是1個或更長。
所以要匹配出所有的數字串,應當用
[0-9]+
或者
\d+
如果要限定長度,就用{}代替+,大括號里寫上你想要的長度。比如11位的數字:
\d{11}
想要再把第一位限定為1,就在前面加上1,后面去掉一位:
1\d{10}
總結一下今天提到的符號
[0-9] \d + {}
現在你可以去一個混雜著各種數據的文件里,抓出里面的手機號,或是其他你感興趣的數字了。
恭喜您在Python的道路上又堅持了一天,跟大家一起學到現在,終于等到大家知道去拓展所學知識的一天了,對于你們這是一個莫大的進步,如果堅持這樣舉一反三、學以致用,那么出道指日可待!
以上就是馬哥教育今天為大家分享的關于如何理解Python中的正則表達式(3)的文章,希望本篇文章能夠對正在 Python學習?和從事Python相關工作的小伙伴們有所幫助,想要了解更多相關知識記得關注馬哥教育官網,每天都會有大量優質內容與大家分享!
聲明:文章來源于網絡,如有侵權請聯系刪除!