首页 > 其他分享 >【10分钟入门】想学爬虫?关于正则表达式,看这一篇就够了!

【10分钟入门】想学爬虫?关于正则表达式,看这一篇就够了!

时间:2023-03-16 12:34:07浏览次数:56  
标签:表示 10 匹配 字符 可以 爬虫 就够 我要 表达式

最近接触到正则表达式,用于匹配对应的字符串,觉得很神奇,于是开始一个学习。

有句老话说得好:“爬虫写得好,牢范吃得饱。”哈哈哈当然是开个玩笑。

工具推荐

regex101: build, test, and debug regex
这个网站可以帮助我们实时地测试RegExp(正则表达式),后面的教程都在这个平台上进行。

RegEx中各种符号的用法

要学习RegEx首先要学会各种符号的用法。

1.限定符

限定符仅作用与左边一个字符,或左边的一块表达式。

  • ? 表示可以出现0次或1次,也就是可有可无
  • + 表示可以出现1次或多次
  • * 表示可以出现任意次
  • {x} 表示必须出现x次,
  • {l, r} 表示出现次数必须在闭区间[l, r]之间,可以省略一个,下界默认为0,上界默认无穷
    假如我要在一些字符中找出以a开头,以c结尾,中间有若干个b的字符串,可以像下面这样写:

在这里插入图片描述

也可以这样写:

在这里插入图片描述

不难发现,前面的这些?+*都可以用{}来表达,不过为了方便就会用前面的表示。

2.“或”运算

在几乎所有编程语言中都有或运算来表示一个不太好一步表示的逻辑集合,在RegExp中也可以。

符号:| 可以将左右两个表达式取并集作为新的表达式,但优先级低于表达式的拼接

比如我要得到所有的a和an,就可以像下面这样写。注意两边要用括号和\b包围起来,\b确保这是一个单词而不是一个单词的一部分,括号是为了防止把"\ba"和"an\b"作为两个表达式,我们的表达式应该是a和an。

在这里插入图片描述

3.字符类

格式:[abc]表示这一位可以是abc中的任意字符,也可以用区间来表示,比如[a-z]表示这一位可以是一个小写字母,[a-zA-Z0-9]+表示这里可以是一个或多个“大写字母或小写字母或数字”。

举个例子,我要匹配所有格式为"班级+学号"中找出所有zy02班的人,可以像下图这样做。
在这里插入图片描述

如果要找出所有jsj1班到3班的,可以像下面这样做。

在这里插入图片描述

这里的\d和[0-9]等价。值得注意的是这里的非法学号jsj0100没有被匹配到。

也可以在 [ ] 的开头添加一个 ^ 字符,表示排除。

4.元字符

  • \d 表示数字
  • \D 表示非数字
  • \w 表示字母、数字和下划线
  • \W 表示非字母、数字和下划线
  • \s 表示空白字符
  • \S 表示非空白字符
  • ^ 匹配行首
  • $ 匹配行尾

5.贪婪匹配与懒惰匹配

RegExp默认匹配模式为贪婪匹配,也就是尽可能长。

假如我在一段HTML中想要匹配出每一个<>标签,如果像下面这样写,会把整个文档作为一个长字符串匹配。

在这里插入图片描述

这显然不是我们想要的结果,我们就可以利用?来改为懒惰匹配。

在这里插入图片描述

修饰符

引用一段菜鸟教程的文章《正则表达式 – 修饰符(标记) | 菜鸟教程》,直接偷懒一手。

一般会用/g,表示global全局搜索。

在Python中使用RegEx

python需要先引入re库,这是一个很强大的字符串匹配库。

我们利用re.search(pattern, string[, flags])来做匹配,会返回一个结果组成的元组,如果没找到返回None,常用于判断。

假如我要在python中识别一段式子是一个负数,还是一个表达式时,可以这样匹配:

在这里插入图片描述

再举个例子,假如我要在一段html中找出所有a标签,可以像下面这样做,,re.findall返回一个list。
在这里插入图片描述

本文结束啦,感谢大家的阅读,如果本文对你有用的话欢迎点赞收藏和关注!

标签:表示,10,匹配,字符,可以,爬虫,就够,我要,表达式
From: https://www.cnblogs.com/eriktse/p/17222103.html

相关文章

  • 10、Master高可用nginx+keepalived布署
    1、前言#这里因为演示,用master2、master3主机做为高可用布署2、keepalived2.1、安装yuminstallgccgcc-c++makeautomakeautoconflibtoolpcrepcre-develzl......
  • android的google三方登录一直返回10
    标题:com.Google.android.gms.common.api.apiException:10:为何一直报错,这个问题的来源是可参考这里的状态码:googleStatusCodes配置其实都很简单,可参考:googleAndroid登录......
  • python爬虫增加多线程采集数据
    Python爬虫对于现如今大数据满天飞的时代来说真是如虎添翼,也越来越多的领域喜欢用Python来实现数据采集。像Scrapy、Request、BeautifuSoap、urlib等框架都可以实现自动爬......
  • shell脚本 续签K8S证书 -续签至10年
    背景,适配kubeadm生成证书集群脚本主题main#!/usr/bin/envbashset-oerrexitset-opipefail#set-oxtrace#setoutputcolorNC='\033[0m'RED='\033[31m'......
  • 基于python实现的抓取腾讯视频所有电影的爬虫
    我搜集了国内10几个电影网站的数据,里面近几十W条记录,用文本没法存,mongodb学习成本非常低,安装、下载、运行起来不会花你5分钟时间。#-*-coding:utf-8-*-importreimport......
  • python爬虫案列08:梨视频爬取一个短视频
    importrequestsfromlxmlimportetreeimportos#拿到视频地址urlurl='https://www.pearvideo.com/video_1160135'#提取url中的cont_id,后面用cont_id=url.sp......
  • 爬虫基础知识
    目录一、requests模块二、requests携带参数的方式三、get请求URL解码编码四、post请求携带数据编码格式四、get请求携带请求头五、post请求携带参数六、requests.session的......
  • 爬虫初识
    目录爬虫初识昨日回顾今日内容详细1爬虫介绍2request模块介绍3request发送get请求4request携带参数5url编码解码6携带请求头7发送post请求携带数据8自动登录携带......
  • 爬虫操作
    目录爬虫操作url网址中文编码解码发送请求携带请求头发送post请求给接口模拟自动登录Requests.sessionpost请求携带数据编码格式返回的response中有哪些数据编码问题爬虫下......
  • 爬虫
    今日内容1.爬虫介绍2.request模块介绍3.request发送get请求4.request携带参数5.url编码解码6.携带请求头7.发送post请求,携带数据8.自动登录,携带cookie的两种方式......