分享交流
合作共赢!

网络爬虫项目实战系列【一】——正则表达式的常用方法总结

一、基础一

全局匹配函数使用格式: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的标签
  • @属性名 –> 代表去某个属性值

 

赞(0) 打赏
未经允许不得转载:琼杰笔记 » 网络爬虫项目实战系列【一】——正则表达式的常用方法总结

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏