爬虫——正则表达式

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='hasghi'
a=re.compile(pat).findall(string)
print(a)
——来自韦玮老师课堂笔记及所悟




你可能感兴趣的:(Python小tips)