正則表達(dá)式雖然不是python語言,但在python爬蟲中卻有著普遍的應(yīng)用,可以說沒有正則表達(dá)式的爬蟲是一個(gè)沒有靈魂的爬蟲,話不多說,直接上干貨!
成都創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、方山網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5網(wǎng)站設(shè)計(jì)、電子商務(wù)商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為方山等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
首先介紹一個(gè)驗(yàn)證正則表達(dá)式的在線平臺(tái):https://regex101.com/
高亮部分即為提取到的內(nèi)容。
-
元字符
- \d 匹配所有數(shù)字
- \w 匹配所有數(shù)字、字母、下劃線
- \D 除了數(shù)字以外的內(nèi)容
- \W 除了數(shù)字、字母、下劃線以外的內(nèi)容
- \S 匹配所有非空白
- [a,b,c] 匹配a,b,c的內(nèi)容
- [^a,b,c] 匹配除了a,b,c的內(nèi)容
- \s 匹配空白
- \b 匹配單個(gè)單詞邊界
-
量詞
- 元字符+ 元字符出現(xiàn)1次或多次(等同于{1, })
- 元字符* 前面的元字符出現(xiàn)0次或多次,盡可能多的拿到數(shù)據(jù)(等同于{0, })
- 元字符? 前面的元字符出現(xiàn)0次或一次
-
匹配字符
- 數(shù)字 [0-9]
- 小寫字母 [a-z]
- 大寫字母 [A-Z]
- 特殊字符 [\特殊字符]
-
^
- 放在區(qū)間里表示取反
- [^0-9] 表示匹配非數(shù)字
- [^a-z] 表示匹配非小寫字母
- 放在區(qū)間外面表示匹配字符串開頭(^python 表示以python開頭的內(nèi)容)
- $ 匹配字符串結(jié)尾(python$ 表示以python結(jié)尾的單詞)
- ?
- 可以出現(xiàn)也可以不出現(xiàn)(colou?r 可以同時(shí)匹配color、colour)
- 轉(zhuǎn)換為非貪婪模式(\d{8,9}? 默認(rèn)會(huì)匹配8和9位的數(shù)字,加上?后,只匹配8位的數(shù)字)
- . 除了換行符以外的任意內(nèi)容
- {數(shù)字} 指定匹配次數(shù)(\d{9}指匹配9位數(shù)的數(shù)字)
- {數(shù)字,數(shù)字} 指定匹配區(qū)間(\d{4, }指匹配4位以上的數(shù)字)
-
惰性匹配
- .* 匹配最遠(yuǎn)的字符
- .*? 匹配最近的字符(惰性匹配)
- 字符串:今天晚上一起吃雞呀(匹配:晚上.*?吃雞) 結(jié)果:晚上一起吃雞
-
分組
- 加括號(hào)就可分組(提取號(hào)碼:0731-的區(qū)號(hào)和正真的電話號(hào)碼 結(jié)果:\d{4}-\d{7})
- eg:
holle
(.*?)
不加括號(hào)是提取不出來的
- | 或則條件 (.jpg|.gif|.jpeg|.png)表示匹配這幾種后綴的圖片格式
- 非捕獲分組 (?:表達(dá)式)
- 提取標(biāo)簽中的文字 提示ge1:破壞標(biāo)簽,將改為結(jié)果:<(\w+)>(.*?)\1> \1 就為了保證和第一個(gè)分組一致
- eg2:編寫代碼匹配符合ab ba 結(jié)果:(\w)(\w)\2\1
- 環(huán)視/欲搜索
eg:在 我喜歡你 我喜歡 我喜歡我 喜歡 喜歡你
正向先行斷言(?=表達(dá)式) 取出喜歡,喜歡的后面必須有”你“
反向先行斷言 喜歡(?!你) 即喜歡后面沒有”你“
正向后行斷言(?<=我)喜歡(?=你) 喜歡的前面右”我“,后面有”你“
反向后行斷言(?
本文均自己整理,時(shí)間也比較趕,可能有的地方會(huì)存在問題,可以評論留言,看到了就會(huì)改。
文章標(biāo)題:python 爬蟲 中的正則表達(dá)式
分享鏈接:
http://weahome.cn/article/dsojddh.html