正则表达式丨Python爬虫基础入门系列(3)

提示:文末有福利!最新Python爬虫资料/学习指南>>戳我领


前言

正则表达式的作用&匹配过程简述
正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌了。
正则表达式的大致匹配过程是:

  • 依次拿出表达式和文本中的字符比较
  • 如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败
  • 如果表达式中有量词或边界,这个过程会稍微有一些不同

话不多说,开始学习
在这里插入图片描述

正则表达式

1、正则表达式的概念

用来表达字符串的简洁方式

通用的字符串表达框架

字符串匹配

2、正则表达式的语法

正则表达式长常用操作符

.:表示任何单个字符。

[]:字符集,对单个字符给出取值范围。[abc]表示a,b,c,[a-z]表示a到z的单个字符。

[^ ]:非字符集,对单个字符给出排除范围。[^abc]表示非a或非b或非c的单个字符。

*:前一个字符出现0次或无限次扩展。abc*表示ab,abc,abcc,abccc等。

+:前一个字符1次或无限次扩展。abc+表示abc,abcc,abcc等

?:前一个字符0次或1次扩展。abc?表示ab、abc。

|:左右表达式任意一个。abc|def表示abc、def{m}:表示扩展前一个字符m次。ab{2}c表示abbc。

{m,n}:扩展前一个字符m至n次(含n),ab{1,2}c表示abc、abbc。

^:匹配字符串开头。^abc表示abc且在一个字符串的开头。

$:匹配字符串结尾。abc$表示abc且在一个字符串的结尾。

():分组标记,内部只能使用|操作符。(abc)表示abc,(abc|def)表示abc、def。

\d:数字,等价于[0-9]。

\w:单词字符,等价于[A-za-z0-9_]#匹配中文字符串:[\u4e00-\u9fa5]

匹配IP地址的正则表达式

IP地址分4段,每段0-255(([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]).){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])

3、Re库的基本使用

Re库介绍

Re库是python标准库,主要用于字符串的匹配。

调用方式:import re

正则表达式的表示类型

raw string类型(原生字符串类型)

用法:r''。即在字符串前面加一个r。

原生字符串:不含转义符\的字符串。

string类型

即不加r,是平时用的字符串,更繁琐。

需用\\来表示\

Re库主要功能函数

re.search(pattern,string,flags=0)

在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象。

pattern:正则表达式的字符串或原生字符串表示。

string:待匹配字符串。

flags:使用时的控制标记。

re.I | re.IGNORECASE:忽略正则表达式的大小写,[A-Z]能够匹配小写字符。

re.M | re.MULTILINE:正则表达式种的^操作符能够将给定字符串的每行当作匹配开始。

re.S | re.DOTALL:正则表达式种的.操作符能够匹配所有字符,默认匹配除换行外的所有字符。

re.match(pattern,string,flags=0)

从一个字符串的开始位置起匹配正则表达式,返回match对象。

参数含义同re.search。

re.findall(pattern,string,flags=0)

搜索字符串,以列表类型返回全部能匹配的字串。

参数含义同re.search。

re.splite(pattern,string,maxsplit=0,flags=0)

将一个字符串按照正则表达式匹配结果进行分割,返回列表类型。

参数含义同re.search。

maxsplit:最大分割数,剩余部分作为最后一个元素输出。

re.finditer(pattern,string,flags=0)

搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象。

参数含义同re.search。

re.sub(pattern,repl,string,count=0,flags=0)

在一个字符串中替换所有匹配正则表达式的子串,返回替换后的子串。

参数含义同re.search。

repl:替换匹配字符串的字符串。

count:匹配的最大替换次数。

#re.compile:面向对象。

rst=re.search(r’[1-9]\d{5},'BIT 100081")

等价于

pat=re.compile(r’[1-9]\d{5}')

rst=pat.search(‘BIT 100081’)

#re.compile(pattern,flags=0):

将正则表达式的字符串形式编译成正则表达式对象。

4、Re库的match对象

Match对象的属性

.string:待匹配的文本。

.re:匹配时使用的pattern对象(正则表达式)。

.pos:正则表达式搜索文本的开始位置。

.endpos:正则表达式搜索文本的结束位置。

Match对象的方法

.group(0):获得匹配后的字符串。

.start():匹配字符串在原始字符串的开始位置。

.end():匹配字符串在原始字符串的结束位置。

.span():返回(.start(),.end())

5、Re库的贪婪匹配和最小匹配

贪婪匹配

Re库默认采用贪婪匹配,即输出匹配最长的子串。

最小匹配操作符

*?:前一个字符0次或无限次扩展,最小匹配。

+?:前一个字符1次或无限次扩展,最小匹配。

??:前一个字符0次或1次,最小匹配。

{m,n}?:扩展前一个字符m至n次(含n),最小匹配。

在这里插入图片描述

总结

关于正则表达式更多的相关知识,大家可以阅读一篇非常有名的文章叫《正则表达式30分钟入门教程》

Python爬虫基础入门系列(3)就到这,希望大家早日修炼成为爬虫大佬!当然,如果你准备系统地学爬虫及更多Python编程技术,可戳我文末的名片,Free领取最新Python爬虫资料/免费咨询/学习路线规划~

戳我名片 · 领取福利

在这里插入图片描述

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值