【python】正则表达式-快速信息匹配,过滤与检测

前言

菜某的总结,希望能够帮到大家。

正则表达式的概念

简单来说就是匹配信息,创建一个规则,匹配文本中符合这个规则的内容

作用领域

单单看他的概念可能觉得他的用途也就是查找,实际上他的用途很广泛

1.信息筛选,过滤不符合规则的内容

2.输入信息验证,匹配用户输入的信息

3.匹配文本中的内容位置

4.辅助爬虫,去爬符合条件的网站,而不是指定具体的网站

常用方法

正则表达式需要使用re库。

函数描述
complie()编译正则表达式
escape()正则符号转义处理
findall()匹配正则符号,以列表形式返回
finditer()匹配正则符号,以迭代形式返回
match()从头开始匹配
purge()清除缓存中的正则表达式
search()在任意位置上进行匹配(只找一个)
split()按照给定匹配符号拆分字符串
sub()正则匹配替换
subn()

正则匹配替换并返回替换结果

案例在下方配合字符使用

字符

正则表达式实际上就是匹配对应的字符,只不过这个字符分为两种

普通字符:顾名思义就是匹配要匹配的那个字

元字符:是符合相应规则的字。

常见元字符:. * + ? \ | { } [ ] ( )

+代表匹配重复出现的内容

?会生成一个列表,满足条件为匹配内容,不满足为空(一个字符一个字符的匹配)

*会生成一个列表,跟?一样,不同的是如果有重复相邻的会作为一个元素

.代表任意字符

{}代表匹配重复的类字符个数

[]指定匹配的内容

|类似于or,后面跟另一个表达式他也会匹配另一个

()分组,把匹配内容进行分组

\数字,规定本组的内容跟第几组的内容一样

某一类别字符:

标识符描述
\b匹配开始或结束位置的空字符
\B匹配不在开头结尾的空字符
\d匹配数字
\D匹配非数字
\s匹配空格
\S匹配非空格
\w匹配字母
\W匹配非字符

可以观察到基本上小写是匹配这一类,大写是匹配不是这一类。

位置匹配符

^规定匹配在文本开头的相应字符

$规定匹配在末本尾的相应字符

\A等价于^

\Z等价于$

\b单词边界

\B非单词边界

。。(?=...)匹配出现在...之前的。。

。。(?!...)匹配不是在...之前的。。

(?<=...)。。匹配出现在...之后的。。

(?<!...)。。匹配不在...之后的。。

其他特殊功能

我从网上找的别人整理的图。

普通字符匹配

案例:

我们可以看到他已经匹配到了相应的字符。

这里findall里的r代表的是把一些转义字符当做普通字符用

某一类别字符匹配与

找数字类字符

找空格类字符

元字符的应用

+字符的应用

+代表了匹配规定字符出现了一次或者多次

这里第一个匹配是匹配连续的数字,第二个匹配是匹配连续的5

?字符的应用

?字符代表的是匹配字符出现0,1。其实就是单个字单个字的匹配。不符合规定的就会返回空字符

 

可以看到这个?是单个字符匹配,匹配到符合的就显示出来,不符合就是空字符

*字符的应用

*的作用与?相类似,不过他会找出重复的作为一个元素,而?是单个字符单个字符的匹配

这里的15和555已经被当做了一个元素放到了列表中。

[ ]的用法

[ ]是用来规定匹配范围的。

[1-5]就代表了匹配其中含有1-5之间的数字的内容

[你好啊]就代表匹配其中含有这三个字之一的内容

[a-zA-Z]就代表匹配所有的字母

{ }的用法

{ }的作用是规定匹配的数量

一些用法举例

\d{1,4}匹配一个或者4个连在一起的数字

\d{,4}匹配小于等于四个的数字

\d{3,}匹配大于等于三个的数字

注意,0个也是小于三个

|符号的用法

|符号前后连接两个表达式,他匹配到任意一个就会记录下来。

这里寻找15或者555,就是既匹配前面的,又匹配后面的。

\与()的用法

先用()进行分组,然后用\规定与哪一组相同

位置匹配符的使用

^与$的使用

^代表只能匹配开头的hello

$代表只匹配句子末尾的hello

 当然如果^放到了[]里面的话就代表了取反的意思

例如[^a-z]就是匹配不是a-z的字符

\b与\B的使用

\b代表匹配字符在单词的前面

\B代表匹配的字符在单词的中间

\b写在前面代表匹配字符需要在单词前方,在后面代表匹配字符需要再单词后方

(?)的使用方法

re模块的方法的使用

查找功能

查找功能有四个

search只返回一个

match从头开始匹配

findall列表形式返回所有

finditer迭代形式返回

值得注意的是,这里的查找功能除了findall是返回列表之外,其他的都是返回一个对象。

先来个案例看一下他们返回的形式

他们返回的就不是列表了

输出他们匹配的内容

输出是需要用到一个group()的,但是他还有一些更高级的用法。

我们可以对匹配的字符进行分组,然后通过在group中添加参数进行规定输出什么内容

 

 以元组的形式返回内容

返回的内容就是元组了

文本替换功能

文本替换功能常用这两个函数

sub()返回被替换后的内容

subn()以元组形式返回替换后的内容和替换的个数

结果如下

 文本分割功能

文本分割通常使用

split()函数

作用就是根据分割的符号,把分割出来的内容以列表的形式表现出来。

这种是排除法,去除不要的,留下要的,之前的是找出要的。

模式设定

 其实在re的参数中还有一个规定模式的参数可以添加,基本上用的最多的是I,可以忽略大小写进行匹配。

其他的模式在上面总结了。

实战案例

校验用户输入合法案例

利用正则表达判断用户是否攻击我方网站(写的简陋能被绕过。。水平有限)

 提取文本中的重要信息

使用起来十分的爽呢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/612941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大语言模型面试问题

自己在看面经中遇到的一些面试题&#xff0c;结合自己和理解进行了一下整理。 transformer中求和与归一化中“求和”是什么意思&#xff1f; 求和的意思就是残差层求和&#xff0c;原本的等式为y H(x)转化为y x H(x)&#xff0c;这样做的目的是防止网络层数的加深而造成的梯…

如何创建自己的小程序?零编程一键创建实战指南

当今瞬息万变的数字世界中&#xff0c;拥有一个属于自己的小程序已成为企业与个人展示、服务和互动的重要途径。无需编码知识&#xff0c;通过便捷的云端可视化平台&#xff0c;也可以轻松创建一款符合自身需求且功能丰富的小程序。下面给大家分享如何创建自己的小程序。 1、选…

消息开始事件message start event

一&#xff1a;bpmn 二&#xff1a;java repositoryService.createDeployment().name("消息事件流程").addClasspathResource("bpmn/msg_event_process.bpmn").deploy(); identityService.setAuthenticatedUserId("huihui"); ProcessInstance p…

自适应批量生成二维码源码系统:电脑+手机端自适应 支持任何类型批量生成二维码 附带完整的搭建教程

在当今数字化的时代&#xff0c;二维码已经成为了我们日常生活和工作中的重要组成部分。无论是分享链接、添加好友&#xff0c;还是支付购物&#xff0c;二维码都以其便捷性受到了广泛的欢迎。下面&#xff0c;罗峰就来给大家分享一款自适应批量生成二维码源码系统&#xff0c;…

最新消息:OpenAI GPT Store 正式上线,GPTs 应用商店来了!

原文链接 https://openaigptguide.com/gpt-store-and-chatgpt-team/ OpenAI推出的两款新产品和服务&#xff1a;GPT Store和ChatGPT Team&#xff0c;提供了许多全新的解决方案和功能&#xff0c;旨在帮助用户更轻松地使用和构建GPT工具&#xff0c;同时也增加了公司的收入来源…

【JaveWeb教程】(17) MySQL数据库开发之 MySQL简介、安装、数据类型、SQL通用语法 详细代码示例讲解

目录 前言1. MySQL概述1.1 安装1.1.1 版本1.1.2 安装1.1.3 连接1.1.4 企业使用方式(了解) 1.2 数据模型1.3 SQL简介1.3.1 SQL通用语法1.3.2 分类 前言 在我们讲解SpringBootWeb基础知识(请求响应案例)的时候&#xff0c;我们讲到在web开发中&#xff0c;为了应用程序职责单一&…

Laravel 使用rdkafka_laravel详细教程(实操避坑)

一、选择rdkafka 首先要看版本兼容问题&#xff0c;我的是Laravel5.6&#xff0c;PHP是7.3.13&#xff0c;所以需要下载兼容此的rdkafka&#xff0c;去 Packagist 搜索 kafka &#xff0c;我用的是 Packagist选择里面0.10.5版本&#xff0c; 二、安装rdkafka 在 Laravel 项目…

python爬虫实战(9)--获取澎pai热榜

1. 需要的类包 import pandas as pd import requests2. 请求地址 通过分析&#xff0c;数据可以直接从接口获取&#xff0c;无需解析页面标签&#xff0c;直接取出我们需要的数据即可。 def fetch_hot_news(api_url):response requests.get(api_url)if response.status_cod…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-3(2) 刚体的位形 Configuration of Rigid Body

本文仅供学习使用&#xff0c;总结很多本现有讲述运动学或动力学书籍后的总结&#xff0c;从矢量的角度进行分析&#xff0c;方法比较传统&#xff0c;但更易理解&#xff0c;并且现有的看似抽象方法&#xff0c;两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

Vue+Element Ui实现el-table自定义表头下拉选择表头筛选

用vueelement ui开发管理系统时&#xff0c;使用el-table做表格&#xff0c;当表格列过多的时候&#xff0c;想要做成可选表头的&#xff0c;实现表格列的筛选显示&#xff0c;效果如下&#xff1a; 代码文件结构&#xff1a; 废话不多说&#xff0c;直接上代码&#xff1a; 第…

2023年,AI爆发的一年

公众号&#xff1a;算法一只狗 今年以来&#xff0c;AI呈爆发式发展。在文本生成的领域&#xff0c;涌现出以ChatGPT为代表的生成式大模型。而在文本图像生成方面&#xff0c;有高度自定义的Stable Diffusion&#xff0c;和简单易用上手的Midjournery。多模态领域更是百花齐放&…

外汇天眼:Options与OneTick合作,共同打造全球SAAS分析平台

Options Technology&#xff0c;一家为全球金融领域提供云服务的托管服务提供商&#xff0c;今天宣布与OneMarketData及其旗舰产品OneTick平台的合作。 Options将使OneTick订户能够访问其庞大的市场数据存储库&#xff0c;包括股票、外汇、期货、期权和固定收益数据&#xff0…

OpenAI GPT商店来了! 创业公司打不过就加入?|对话Agent创业公司S2R

文&#xff5c;郝 鑫 1月10日&#xff0c;OpenAI推出了在线商店“GPT Store”。该商店已于昨日开始向付费用户、团队和企业用户推出&#xff0c;商店汇集了用户为各种任务创建的ChatGPT的自定义版本。 2023年初到年末&#xff0c;Agent就像一位来自异域的吉普赛女郎&#…

linux 网络基础配置

将Linux主机接入到网络&#xff0c;需要配置网络相关设置一般包括如下内容&#xff1a; 主机名 iP/netmask (ip地址&#xff0c;网关) 路由&#xff1a;默认网关 网络连接状态 DNS服务器 &#xff08;主DNS服务器 次DNS服务器 第三个DNS服务器&#xff09; 一、…

【System Verilog and UVM实力进阶2】SVA语法

毛主席说过&#xff1a;没有调查就没有发言权。 《SVA介绍——学习SVA语法》系列第二讲 本文还是延续上一篇的风格&#xff0c;语言内容尽可能简单明了&#xff0c;有问题大家相互讨论&#xff0c;共同进步。需要电子书的朋友可以给我发邮件。tommi.weiqq.com 1.16 "ended…

本地远程实时获取无人机采集视频图像(天空端 + jetson nano + 检测分割 + 回传地面端显示)

无线图传设备介绍 2、jetson nano天空端数据采集检测保存 3、本地回传显示 1、无线图传设备介绍 由于本设计考虑将无人机得到检测结果实时回传给地面站显示&#xff0c;因此需要考虑一个远程无线通信设备进行传输。本设计采用思翼HM30图传设备。通过无线图传的wifi将天空端的桌…

2023全球软件研发技术大会(SDCon2023)-核心PPT资料下载

一、峰会简介 本次峰会包含12大会议主题&#xff1a;云原生设施与平台、微服务架构实践、软件质量与效能、大数据实践与前沿、架构设计与演进、高可用与高性能架构、Web与大前端开发、编程语言与平台、AIGC与大模型、推荐系统实践、AI智能应用与研究、机器学习架构实践。 软件…

版本控制背景知识

版本控制背景知识 本文是关于 Git 系列文章的导读&#xff0c;我们先介绍一下版本控制的背景知识。 什么是版本控制 版本控制是一种记录一个或若干文件内容变化&#xff0c;以便将来查阅特定版本修订情况的系统。它将什么时候、什么人更改了文件的什么内容等信息如实记录下来…

HTML---JavaScript操作DOM对象

目录 文章目录 本章目标 一.DOM对象概念 二.节点访问方法 常用方法&#xff1a; 层次关系访问节点 三.节点信息 四.节点的操作方法 操作节点的属性 创建节点 删除替换节点 五.节点操作样式 style属性 class-name属性 六.获取元素位置 总结 本章目标 了解DOM的分类和节点间的…

超市商品管理系统设计 C++实现

超市商品管理系统设计—C实现 文章目录 超市商品管理系统设计---C实现一、内容要求大纲图 二、源代码&#xff08;包含大量注释&#xff09;1、main.cpp文件2、supermarket.h文件3、supermarket.cpp文件4、administrator.h文件5、administrator.cpp文件6、user.h文件7、user.cp…