Python爬虫之八:正则表达式

1、re 模块

re模块是python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,而正则表达式是对字符串进行模糊匹配,提取自己需要的字符串部分,他对所有的语言都通用。注意:
1.re模块是python独有的
2.正则表达式所有编程语言都可以使用
3.re模块、正则表达式是对字符串进行操作
因为,re模块中的方法大都借助于正则表达式,故先学习正则表达式。

2、正则表达式

1.正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。
2.正则就是用来描述一类事物的规则。
3.在Python中,它内嵌在Python中,并通过 re 模块实现。
4.正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。

一、单字符的匹配

1、元字符

元字符 匹配内容
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空白符
a b
() 匹配括号内的表达式,也表示一个组
[…] 匹配字符组中的字符
[^…] 匹配除了字符组中字符的所有字符

使用语法如下:

import re  #导入 re 模块

text = 'abc' #正则表达式查询的字符串
ret = re.match('.', text) # 查询text的第一个字符是否符合正则表达式的要求
print(ret.group()) # 打印匹配到的字符

2、组合字符

正则 待匹配字符 匹配结果 说明
[0123456789] 8 True 在一个字符组里枚举合法的所有字符,字符组里的任意一个字符和"待匹配字符"相同都视为可以匹配
[0123456789] a False 由于字符组中没有"a"字符,所以不能匹配
[0-9] 7 True 也可以用"-"表示范围,[0-9]就和[0123456789]是一个意思
[a-z] m True 同样的如果要匹配所有的小写字母,直接用[a-z]就可以表示
[A-Z] M True [A-Z]就表示所有的大写字母
[0-9a-fA-F] z True 可以匹配数字,大小写形式的a~f,用来验证十六进制字符

使用语法如下:

import re #导入 re 模块

text = '89abc'  #正则表达式查询的字符串
ret = re.match('[0-9]', text)  # 查询text的第一个字符是否符合正则表达式的要求
print(ret.group()) # 打印匹配到的字符

二、多字符的匹配

1 、量词

量词 用法说明
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

2、使用方法

1、*:重复零次或更多次
# * 重复零次或更多次
text01 = '1abc'
ret01 = re.match('\w*', text01)
print(ret01.group()) 

解释:输出结果为 4 个字符(1abc),先用 ‘\w’ 去匹配 text01,如果符合要求则继续匹配下一个字符是否符合 ‘\w’ 的规则,如果第一个都不符合直接返回匹配到 0 个字符,如果后面遇到不符合的直接返回匹配到符合的字符的总数。

2、+:重复一次或更多次

‘+’ 和 ‘*’基本用法是一样的,唯一的区别是,它最少要匹配到一个字符

3、?:重复零次或一次

‘?’ 和 ‘*’的区别是:它只能匹配0个或1个字符

4、{n}:重复n次

‘{n}’ 和 ‘*’的区别是:它只能匹配n个字符,匹配不到就报错

5、{n,}:重复n次或更多次

‘{n,}’ 和 ‘*’的区别是:它只能匹配n个或多个字符,匹配不到n个就报错,返回匹配的最多个数。

6、{n,m}:重复n到m次

‘{n,}’ 和 ‘*’的区别是:它只能匹配n个到m个之间的字符,匹配不到n个就报错,返回匹配的最多个数。

三、四个小案例

1、验证手机号

import re

# 验证手机号:以1开头,第二位是3-9,其余的是0-9
text = input('请输入手机号:')
if len(text) == 11
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值