爬蟲——正則表達式

1、原子

import re
#普通字符作爲原子
pat='yu'        #2個原子
string='http://yun.iqianyue.com'                
a=re.search(pat,string) 
print(a)
#非打印字符作爲原子      
pat='\n'                      
string='''kalsjflak
aksfjlk'''
a=re.search(pat,string) 

#通用字符作爲原子  \w可代表任意字母、數字、下劃線  \W匹配任意除了\w
#                  \d任意十進制數 0-9整數
#                  \s任意空白字符   \S除\s之外的任意字符
pat='\w\dpython\w'       
string='ajskfh_7python3skd'
a=re.search(pat,string) 
#原子表——[abc] 只包含a b c中的一位
pat='abc[abc]l'
string='asfdaflabcblabc'
d=re.search(pat,string)

2、元字符

#   .可匹配任意字符(換行符除外)

#   ^匹配字符串開始位置

#   $匹配結束位置

#   *匹配0、1、多次前面的字符  's*'可匹配s ss sss

#   ?匹配0、1前面的字符            s ss

#   +匹配1、多次前面的字符          ss sss

#   {n} 前面的原子出現n次       t{6} 表示tttttt

#   {n,}前面的原子至少出現n次

#   {n,m}前面的原子至少出現n次,至多出現m次

#   | 或            t|s

#   ()表示要提取的內容


3、模式修正符

#   I 忽視大小寫

#   M多行匹配

#   L本地化識別匹配

#   U根據Unicode解析

#   S使.可匹配換行符

pat='python'
string='ajshfjdskaghlPythonshfjh'
a=re.search(pat,string,re.I)
print(a)
#貪婪模式(多匹配)與懶惰模式(少匹配)
pat1='p.*y'
pat2='p.*?y'
string='abcdajsdpythonjkashfpy'
a=re.search(pat1,string)
print(a)
b=re.search(pat2,string)
print(b)             #只匹配第一個py

4、正則表達式函數

#   re.match   從頭開始匹配(pat中的第一個元素必須對應string中的第一個元素)
#   re.search
#   re.sub      替換

pat='[a-zA-Z]+://[^\s]*[.com|.cn]'
string='<a herf=http://www.baidu.com>hasghi</a>'
a=re.compile(pat).findall(string)
print(a)
——來自韋瑋老師課堂筆記及所悟




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章