python网络爬虫开发:正则表达式的学习

2022-08-0710:32:39云计算与物联网Comments1,246 views字数 984阅读模式

学习爬虫的过程中,正则表达式能够帮助我们根据某些复杂的规则去处理复杂的字符串,它是一个特殊的字符序列,在Python中,系统自带的re模块包含了正则表达式的全部功能,下面我们进入正则表达式的学习。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

 1. 元字符文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

正则表达式的结构由普通字符和元字符组成,普通字符就是我们日常使用的文本字符,而元字符有它特定的含义,具有匹配信息的功能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

常用的正则表达式元字符如下表格:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

元字符功能
\转义符,表示位于‘\’之后的为转义字符。
.任意一个字符
?匹配‘?’前面的字符一次或零次
+匹配‘+’前面的字符一次或多次
*匹配‘*’前面的字符零次或多次
-用在[]之内用来表示范围
^匹配行首,匹配以^后面的字符开头的字符串
$匹配行尾,匹配以$之前的字符结束的字符串
()定义分组
[]定义字符类
{}定义量词
|选择符号,或关系
\b匹配单词头或单词尾
\B与\b相反
\d匹配任何数字,相当于[0-9]
\D与\d相反
\s匹配任何空白字符
\S与\s相反
\w匹配任何字母、数字以及下划线,相当于[a-zA-Z0-9]
\W与\w相反
\z匹配字符串结束
\G匹配最后完成的位置
\A匹配字符串开始

2. 元字符功能文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

1)  字符类[]文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

例如在一个列表中有‘apython’、‘bpython’、‘cpython’、‘dotcpp’四个元素,我们使用‘[abc]python’可以直接匹配到前面三个元素。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

2)  [a-zA-Z0-9]文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

这个可以匹配一个任意大小写字母或者数字,等同于\w。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

3) 重复 {}文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

如果我们使用{n},即‘pyt{}on’,只能匹配到python,使用{n,}可以匹配至少n次,使用{n,m}可以匹配至少n次,最多m次。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

4)  开始于结束字符文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

使用‘^’和‘$’可以匹配一行字符串的开始和结束。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

5)  a|b文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

可以匹配a或者b。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

6)  匹配出现次数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

语法格式如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

1
2
3
4
import re
= '1234567'
p1 = r'\d?'
print(re.search(p1,s))

可以改为\d*或\d{2,3}或d+等来进行匹配。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

1
<re.Match object; span=(01), match='1'>

由于‘?’为匹配0次或一次,所以匹配了出现数字一次。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

 3. 总结文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

本节我们主要总结了正则表达式里的元字符及几种常用的功能,这些元字符在我们后续的学习中会涉及到,大家可以回过头来参考本节的内容。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/26700.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/yunda/26700.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定