网络爬虫——正则表达式用法及实例

正则表达式

简单来说,正则表达式就是描述字符串的一套规则。比如,我们想找出一个网页中的所有URL链接,其他的信息需要过滤掉。那么此时,我们可以观察链接的格式,然后写一个正则表达式来表示所有的电子邮件。随后,我们可以利用该表达式从网页中提取出所有满足该规则的URL链接。正则表达式的功能非常强大,在爬虫的实际项目中,对于处理特定格式的信息,经常需要用到正则表达式。

在Python中,可以使用re模块来实现Python正则表达式。

一、正则表达式基础知识

正则表达式学习其实非常简单,就是有较多的需要记的字符、字符功能。为了能够有一个系统的i思维去把握正则,我将会从原子、元字符、模式修正符与懒惰模式等方面介绍。

  1. 原子
    原子——正则表达式中最基本的单位(普通字符、非打印字符、通用字符、原子表)

    普通字符
    数字、大小写字母、下划线等都可作为原子使用。

    非打印字符

    符号含义
    \n用于匹配一个换行符
    \t用于匹配一个制表符

    通用字符

    符号含义
    \w匹配任意一个字母、数字或下划线
    \W匹配除字母、数字或下划线以外的任意一个字符
    \d匹配任意一个十进制数
    \D匹配除十进制数以外的任意一个字符
    \s匹配任意一个空白字符
    \S匹配除空白字符以外的任意一个字符

    原子表
    可以定义一组地位平等的原子,然后匹配的时候会取该原子表中的任意一个原子进行匹配。在Python中,原子表由[]来表示,如[xyz]就是一个原子表,定义了三个原子,三个原子地位平等。(另注:^xyz表示除原子表以外的任意字符)
    在这里插入图片描述

  2. 元字符
    以上是常见原子的使用,一般需要结合元字符才能发挥正则表达式的强大功能。
    元字符,在正则表达式中即具有特殊含义的字符。(另注:| 模式选择符)

    符号含义
    .匹配除换行符以外的任意字符
    ^匹配字符串的开始位置
    $匹配字符串的结束位置
    *匹配0次、1次或多次前面的原子
    +匹配1次或多次前面的原子
    {n}前面的原子恰好出现n次
    {n,}前面的原子至少出现n次
    {n,m}前面的原子至少出现n次,至多出现m次
    ()模式单元符
  3. 模式修正符
    所谓模式修正符,即在不改变正则表达式的情况下,通过模式修正符改变正则表达式的含义,从而实现一些匹配结果的调整功能。

符号含义
I匹配时忽略大小写(Ignore的首字母)
M多行匹配(Multiple的首字母)
L做本地化识别匹配
U根据Unicode字符及解析字符
S让.匹配包括换行符,可以匹配任意字符

在这里插入图片描述

  1. 贪婪模式与懒惰模式

    贪婪模式核心:尽可能的多匹配,懒惰模式核心:匹配成功一次就不再匹配。
    贪婪模式在第一次匹配成功后,不会停止,一直到整个待匹配内容的最后。
    懒惰模式在第一次匹配成功后就会停止,就近原则。
    在这里插入图片描述

二、正则表达式常用函数

常见的正则表达式函数有 re,match()re,search()全局匹配函数re,sub()

re.match()——源字符串的开头进行匹配,要求第一个字符就匹配成功
re.search()——全文进行检索匹配,与match()最大不同是,在全文在进行检索并匹配
在这里插入图片描述
全局匹配函数(re.findall)
需先对正则表达式进行预编译,pattern=re.compile(".python."),返回的是list集合
在这里插入图片描述
re.sub()函数
re.sub(pattern,rep,string,max)——rep:要替换成的字符串,max:可选项,最多替换次数

三、正则表达式实例

对于正则表达式的学习,实战是最好的方法。当然也需要不断地积累,做到熟能生巧。

  1. 匹配.com或.cn后缀的URL网址
    实例目的:将一串字符里面的以.com或.cn为域名的URL网址匹配出来。
    在这里插入图片描述
  2. 匹配电话号码
    实例目的:将一串字符里出现的电话号码信息提取出来。
    在这里插入图片描述
  3. 匹配电子邮件
    实例目的:将一串字符里面出现的电子邮件信息提取出来。
    在这里插入图片描述

四、结束语

最后,祝大家都能学有所成!!!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲代码的胖虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值