1. 程式人生 > >Python 爬蟲_正則表達式

Python 爬蟲_正則表達式

需要 特殊字符 reg sch content load 過濾 輸出字符串 數量

用來對字符串操作的一種邏輯方式, 對字符串的一種過濾邏輯。
表達式全集: http://tool.oschina.net/uploads/apidocs/jquery/regexp.html

1.

1. re.match ==>嘗試從字符串的起始位置匹配一個模式,如果第一個字符不嫩匹配,則不能正常匹配
        re.match(pattern,sring,flags=0)

2. 匹配目標:

import re
        content=Hello 1234567 world_this is a regex demo
        result=re.match(^Hello\s(\d+)\sworld.*demo$
,content) #正則表達式 print(result.group(1)) #輸出第一個括號的內容 print(result.span()) #輸出輸出字符串的數量

3. 貪婪匹配:

import re
        content=Hello 1234567 world_this is a regex demo
        result=re.match(^He.*(\d+)\sworld.*demo$,content)    
        print(result.group(1))    #只能輸出7
#
非貪婪匹配 import re content=Hello 1234567 world_this is a regex demo result=re.match(^He.*?(\d+).*demo$,content) print(result.group(1)) #輸出1234567
#匹配模式:
        import re
        content=‘‘‘Hello 1234567 world_this 
        is a regex demo
        ‘‘‘
        result
=re.match(^He.*?(\d+).*?demo$,content,re.s) #re.s 是匹配換行符的 print(result.group(1)) #輸出1234567

4. 轉義: 特殊字符需要轉義

import re
        content=price is $500
        result=re.match(price is \$500\‘,content)     #轉義之後才能匹配

5. re.search: 掃描字符串,返回第一個匹配的字符,能用search就不用match

import re
        content=Hello 1234567 world_this is a regex demo
        result=re.search(Hello\s(\d+)\sworld.*demo$,content)     #輸出全部字符串

6. re.findall

results=re.findall(正則表達式,html,re.S)
        for result in results:
        print(result)
        print(result[1],result[2]...)

7. re.sub: 字符串替換

import re
        content=Hello 1234567 world_this is a regex demo extra stings
        content=re.sub(\d+,‘‘,content)

8. re.compile: 把字符串編譯成正則表達式

import re
        content=‘‘‘Hello 1234567 world_this 
        is a regex demo
        ‘‘‘
        result=re.compile(hello.*demo,re.s)    #re.s 是匹配換行符的
        result=re.match(pattern,content)
#實戰練習:
        import requests
        import re
        content=requests.get(http://book.doubancom/).text
        patten=re.compile(<li,*cover.*?href="(.*?)".*?title="(.*?)".*?more-meta.*?author>(.*?)</span>.*?year>(.*?)</span>.*?</li>,re.S)
        results=re.findall(pattern.content)
        #print (results)
        for result in results
            url, name,author,date=result
            author=re.sub(\s,‘‘,author)
            date=re.sub(\s,‘‘,date)
            print(url,name,author,date)

Python 爬蟲_正則表達式