网络爬虫——正则表达式语法

网络爬虫——正则表达式语法正则表达式基础讲解一、什么是正则表达式在网络爬虫将网页内容爬取的时候,有一个关键的步骤就是对我们关注的信息进行提取,正则表达式就是用于信息筛选提取的强大工具,并且学习简单,所以建议大家掌握。Python正则表达式语句re.compile(“正则表达式”).findall(“原字符串”)1.匹配符普通字符 正常匹配其中的字符。\n 匹配换行符。\t 匹配制表符。\…

大家好,又见面了,我是你们的朋友全栈君。

正则表达式基础讲解

代码代写(实验报告、论文、小程序制作)服务请加微信:ppz2759

一、什么是正则表达式

在网络爬虫将网页内容爬取的时候,有一个关键的步骤就是对我们关注的信息进行提取,正则表达式就是用于信息筛选提取的强大工具,并且学习简单,所以建议大家掌握。

Python正则表达式语句

import re

re.compile(“正则表达式”).findall(“原字符串”)
//例子:
# job_add_s = '<span class="t3">(.*?)</span>'
# job_add = re.compile(job_add_s, re.S).findall(data)[1:]

1.匹配符

普通字符			正常匹配其中的字符。
\n				匹配换行符。
\t				匹配制表符。
\w				匹配字母、数字、下划线。
\W				匹配除了字母、数字、下划线的字符串。字母大写相当于非(个人总结)
\d				匹配十进制数字
\D				匹配除了十进制数字的字符串
\s				匹配空白字符
\S				匹配非空白字符
[asd213]		匹配中括号中的任意一个字符
[^asd213]		匹配中除了括号中的任意一个字符

实例1

源字符串:"chengxuyuanxiaozhe666"
正则表达式:"xiaozhe"
匹配后:"xiaozhe"

实例2

源字符串:"chengxuyuanxiao
zhe666"
正则表达式:"xiao\nzhe"
匹配后:"xiao\nzhe"

实例3

源字符串:"chengxuyuanxiaozhe666"
正则表达式:"\w\w\w\d\d\d"
匹配后:"zhe666"

实例4

源字符串:"chengxuyuanxiaozhe666"
正则表达式:"xia[asdo]zhe"
匹配后:"xiaozhe"

2.特殊字符

想单纯的使用以下字符,需要在前面加一个\,如$。

.				匹配除换行符 \n 之外的任何单字符。
^				匹配输入字符串的开始位置。
$				匹配输入字符串的结尾位置。 
*				前一个字符出现零次或多次。
+				前一个字符出现一次或多次。
?				前一个字符出现零次或一次。
{ 
   n}				前一个字符恰好出现n次
{ 
   n,}			前一个字符至少出现n次
{ 
   n,m}			前一个字符至少n次,至多m次
|				指明两项之间的一个选择。
()				标记一个子表达式的开始和结束位置。

实例1

源字符串:"chengxuyuanxiaozhe666zuishuai"
正则表达式:"xiao..."
匹配后:"xiaozhe"

实例2

源字符串:"chengxuyuanxiaozhe666zuishuai"
正则表达式:"^xiaozhe..."//从第一个字母开始匹配
匹配后:None

实例3

源字符串:"chengxuyuanxiaozhe666zuishuai"
正则表达式:"^chengxuyuan"
匹配后:"chengxuyuan"

实例4

源字符串:"chengxuyuanxiaozhe666zuishuai"
正则表达式:"zuishuai$"//从最后一个字母开始匹配
匹配后:"zuishuai"

实例5

源字符串:"chengxuyuanxiaozhe666zuishuai"
正则表达式:"cheng.*"//*前一个字符出现零次或多次。//.匹配除换行符 \n 之外的任何单字符。
匹配后:"chengxuyuanxiaozhe666zuishuai"//默认贪婪尽可能多的匹配

实例6

源字符串:"chengxuyuanxiaozhe666zuishuai"
正则表达式:"zhe6+"
匹配后:"zhe666"

实例7

源字符串:"chengxuyuanxiaozhe666zuishuai"
正则表达式:"zhe6?"
匹配后:"zhe6"

实例8

源字符串:"chengxuyuanxiaozhe666zuishuai"
正则表达式:"zhe6{1,2}"
匹配后:"zhe66"

实例9

源字符串:"chengxuyuanxiaozhe666zuishuai"
正则表达式:"^cheng(xu....)"
匹配后:"xuyuan"

3.贪婪模式与懒惰模式

贪婪模式:就是尽可能多的匹配,默认贪婪模式
懒惰模式:就是尽可能少的匹配,也叫精准模式
当出现以下组合时,才代表是懒惰模式:

*?				懒惰模式//?不代表0或1了
+?				懒惰模式//?不代表0或1了

实例1

源字符串:"chengxuyuanxiaozheezhe666zuishuai"
正则表达式:"xiao.*e"
匹配后:"xiaozhezhe"//默认贪婪模式,尽可能多的匹配

实例2

源字符串:"chengxuyuanxiaozhezhe666zuishuai"
正则表达式:"xiao.*?e"
匹配后:"xiaozhe"//懒惰模式,尽可能少的匹配

4.模式修正符

在不改变正则表达式的情况下,通过模式修正符使匹配结果发生改变。
这个看不懂没关系,下面的例子就懂了

re.compile(“正则表达式”).findall(“原字符串”)			//原匹配语句
re.S				//使.也可以匹配换行
re.I				//匹配时候忽略大小写

实例1

源字符串:"XiaoZhe"
正则表达式:"xiao"
匹配语句:re.compile("xiao").findall("XiaoZhe")
匹配后:None

实例2

源字符串:"XiaoZhe"
正则表达式:"xiao"
匹配语句:re.compile("xiao",re.I).findall("XiaoZhe")
匹配后:"Xiao"

实例3

源字符串:"cheng\nxuyuan\nxiao\nzhe"
正则表达式:"cheng.*zhe"
匹配语句:re.compile("cheng.*zhe").findall("XiaoZhe")//.不包括回车
匹配后:None

实例4

源字符串:"cheng\nxuyuan\nxiao\nzhe"
正则表达式:"cheng.*zhe"
匹配语句:re.compile("cheng.*zhe",re.S).findall("XiaoZhe")
匹配后:"cheng\nxuyuan\nxiao\nzhe"

以上就是个人总结的关于正则表达式的知识点,望采纳
除了正则表达式外,我还推荐大家学习另一款XPath表达式,非常简单,比较重要,
XPath表达式在我的另一篇博客有介绍,如果没看到说明还没写完哈
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159786.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • WiFi的2.4G、5G、6G频段「建议收藏」

    WiFi的2.4G、5G、6G频段「建议收藏」目前WiFi已经推出了6G频段,Android源码中也增加了相关的功能,这里总结一下。2.4G一共分为14个信道(1-14),从2412到2484,每个信道的有效宽度是20MHz,另外还有2MHz的强制隔离频带(类似于公路上的隔离带)。即,对于中心频率为2412MHz的1信道,其频率范围为2401~2423MHz。5G一共有60个信道(32-173),从5160到5865,在中国支持的5G信道为363840444648525456606264,后六个是DFS。6G为1-2

    2022年10月20日
    0
  • redis集群搭建(非常详细,适合新手)_redis哨兵模式两主多从

    redis集群搭建(非常详细,适合新手)_redis哨兵模式两主多从前言由于项目需要,搭建了一个Redis服务器集群,实现了主从配置和容灾部署,使得主机出现故障时,可自动进行容灾切换,下面就详细讲解一下如何利用Redis来实现。文章重点1、Redis入门简介2、Redis安装部署3、Redis集群整体架构4、Redis主从配置及数据同步5、Redis哨兵模式搭建一、Redis入门简介Redis(RemoteDictiona…

    2022年9月1日
    2
  • Linux 命令tail手动实现

    Linux 命令tail手动实现手动实现一个Linuxtail命令

    2022年5月18日
    46
  • 嵌入式系统基础知识——之嵌入式微处理器体系结构(1.2)「建议收藏」

    嵌入式系统基础知识——之嵌入式微处理器体系结构(1.2)「建议收藏」1.2嵌入式微处理器体系结构1.2.1 冯诺依曼与哈弗结构1、冯诺依曼结构也称为普林斯顿结构,即程序将指令存储器和数据存储器合并在一起的存储结构,程序与数据公用1个存储空间,只是程序指令存储地址与数据存储地址指向同一存储器的不同物理地址;采用单一的地址及数据总线,程序指令与数据的宽度相同,在告诉运算时,传输通道上存在着瓶颈效应。主要包括:英特尔的8086,ARM7、MIPS等微

    2022年9月28日
    0
  • 方程自己解(1)——物理信息神经网络(PINN)

    方程自己解(1)——物理信息神经网络(PINN)文章目录前言(一)物理神经网络(PINN)解读1.1PINN基本背景1.2PINN算法描述前言  最近正在看利用“深度学习”(大概吧,其实只是利用了neuralnetwork的自动微分特性(AD)),在看一些文章的同时,将文章中提到的开源代码用起来和复现一些基本方程求解能够加快我学习的进度,这里将持续贴出一些方程和代码的求解过程。当然非常希望同学和朋友们可以给我指出错误,最后如果能够坚持下去,这个系列的工作会分享到github,同时如果对各个开源程序有所帮助那就更好了!  由于会参考到很多文章

    2022年10月23日
    0
  • 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)

    史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)转载请标明出处:http://blog.csdn.net/forezp/article/details/69696915本文出自方志朋的博客一、springcloud简介鉴于《史上最简单的SpringCloud教程》很受读者欢迎,再次我特意升级了一下版本,目前支持的版本为SpringBoot版本2.0.3.RELEASE,SpringCloud版本为F…

    2022年6月9日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号