Python学习之旅(核心编程爬虫篇004正则表达式)

Python核心编程爬虫篇2021.03.16

指导教师:逻辑教育讲师Jerry

一、正则表达式概念

正则表达式是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个规则字符串。是用来对字符串的过滤逻辑公式。

二、应用场景

  • 表单验证,例如 : 手机号、邮箱、身份证等
  • 爬虫数据提取

三、正则表达式的使用(对Python的支持)

1、普通字符

  • 正则表达式中的普通字符,在匹配的时候,只匹配与自身相同的一个字符
  • 例如:达式c,在匹配字符串abcde时,匹配结果是:成功;匹配到的内容是c;匹配到的位置开始于2,结束于3。(注:下标从0开始还是从1开始,因当前编程语言的不同而可能不同)

2、元字符

正则表达式中使用了很多元字符,用来表示这些特殊的含义或功能

表达式 匹配
. 匹配除了换行符\n以外的任意字符
| 逻辑或操作符
[] 匹配字符集中的一个字符
[^] 对字符集求反,^必须放在前面
- 定义[]里的一个区间,例如a-z
\ 对一些具有特殊功能的字符进行转义
() 对表达式进行分组,将括号内的内容当做整体,并获得其所匹配的值

3、预定义匹配字符集

正则表达式中的一些表示方法,可以同时匹配某个预定义字符集中的任意一个
字符。比如,表达式\d可以匹配任意一个数字,但是只能是一个,不是多个。

表达式 匹配
\d 0-9中的任意一个数字
\w a-zA-Z0-9_中的任意一个字符
\s 空格、制表符、换页符等空白字符中的任意一个字符
\D \d的反集,非数字中的任意一个字符,等同于[^\d]
\W \w的反集,等同于[^\w]
\S \s的反集,等同于[^\s]

4、重复匹配

为了对某个字段进行重复匹配,例如手机号码13666666666,可以使用表达式再加上修饰匹配次数的特殊符号{},例如[abcd][abcd]可以写成[abcd]{2}

表达式 匹配
{n} 表达式重复n次,比如a{3}相当于aaa
{m,n} 表达式至少重复m次,至多重复n次,比如ab{1,3}可匹配ab,abb,abbb
{ m,} 表达式至少重复m
? 匹配表达式0次或者1次,相当于{0,1}比如 a[cd]?可以匹配a,ac,ab
+ 表达式至少重复1次 ,相当于{1,},比如a+b可以匹配ab,aab,aaab
* 表达式重复0次到任意次,相当于{0,},比如\^*b,可以匹配b,^b,^^b,^^^b

5、位置匹配

有时候,我们对匹配出现的位置有要求,如开头、结尾、单词之间等等

表达式 匹配
^ 在字符串开始的地方匹配
$ 在字符串结束的地方匹配
\b 匹配一个单词的边界(单词和空格之间的位置)
\B 匹配非单词边界

6、贪婪与非贪婪匹配

  • 贪婪匹配:以最长的结果作为返回 在Python当中默认是贪婪的 总是去尝试匹配尽可能多的字符
  • 非贪婪匹配:总是尝试去匹配尽可能少的字符,例如.*,.+?,{m,n}?
"""非贪婪匹配"""
import re

s =
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值