一、基础一
全局匹配函数使用格式:re.compile(正则表达式).findall(源字符串)
普通字符:正常匹配
- \n: 匹配换行符
- \t: 匹配制表符
- \w: 匹配字母、数字、下划线
- \W: 匹配除字母、数字、下划线
- \d: 匹配十进制数字
- \D: 匹配除十进制数字
- \s: 匹配空白字符
- \S: 匹配除空白字符
- [ab89x]: 原子表,匹配ab89x中的任意一个
- [^ab89x]: 原子表,匹配除ab89x以外的任意一个字符
实例:
1.源字符串:”aliyunedu”
正则表达式:”yu”
匹配结果:yu
示例函数:
>>> import re >>> string="aliyunedu" >>> pat="yu" >>> re.compile(pat).findall(string) ['yu']
2.源字符串:”aliyun
edu”
正则表达式:”yun\n”
匹配结果:yun\n
3.源字符串:”aliyu89787nedu”
正则表达式:”\w\d\w\d\d\w”
匹配结果:u89787
4.源字符串:”aliyun89787nedu”
正则表达式:”\w\d[nedu]\w”
匹配结果:87ne
二、基础二
字符 正常匹配
- . 匹配除换行外任意一个字符
- ^ 匹配开始位置
- $ 匹配结束位置
- * 前一个字符出现0\1\多次
- ?前一个字符出现0\1次
- + 前一个字符出现1\多次
- {n} 前一个字符恰好出现n次
- {n,m} 前一个字符至少出现n次,至多m次
- | 模式选择符或
- () 模式单元,通俗来说就是,想提取出什么内容,就在正则中用小括号将其括起来
实例
源字符串:”aliyunnnnnji87362387aoyubaidu”
1.正则表达式:”ali…”
匹配结果:aliyun
2.正则表达式:”^li…”
匹配结果:None
3.正则表达式:”^ali…”
匹配结果:aliyun
4.正则表达式:”bai..$”
匹配结果:baidu
5.正则表达式:”ali.*”
匹配结果:aliyunnnnnji87362387aoyubaidu
Tips: 默认贪婪,即默认尽可能多地进行匹配
6.正则表达式:”aliyun+”
匹配结果:aliyunnnn
7.正则表达式:”aliyun?”
匹配结果:aliyun
8.正则表达式:”yun{1,2}”
匹配结果:yunn
9.正则表达式:”^al(i…)”
匹配结果:iyun
三、基础三
贪婪模式:尽可能多地匹配
懒惰模式:尽可能少地匹配,精准模式
默认贪婪模式:如果出现组合*?和+?,则代表懒惰模式;
实例:
源字符串:”poypthonyhjskjsa”
1.正则表达式:”p.*y”
匹配结果:poypthony
note: 默认贪婪模式
2.正则表达式:”p.*?y”
匹配结果:[‘poy’,’pthony’]
四、基础四
模式修正符:在不改变正则表达式的情况下通过模式修正符使匹配结果发生更改
re.S : 让”.”也可以匹配多行
re.I :让匹配时忽略大小写
实例:
源字符串:”Python”
正则表达式:”pyt”
匹配方式:re.compile(“pyt”).findall(“Python”)
匹配结果:[]
源字符串:”Python”
正则表达式:”pyt”
匹配方式:re.compile(“pyt”).findall(“Python”)
匹配结果:Pyt
源字符串:string=”””我是阿里云大学
欢迎来学习
Python网络爬虫课程”””
正则表达式:pat=”阿里.*?Python”
匹配方式:re.compile(pat,re.S).findall(string)
匹配结果:[‘阿里云大学\n欢迎来学习\nPython’]
XPath表达式
除了正则表达式外,还有一些非常耗用的信息筛选工具,比如XPath表达式、Beautiful Soup等,如下介绍XPath表达式:
- / –> 逐层提取
- test() –> 提取标签下面的文本
- //标签名** –> 提取所有名为**的标签
- //标签名[@属性=’属性值’] –> 提取属性为XX的标签
- @属性名 –> 代表去某个属性值
评论前必须登录!
注册