当前位置: 首页 > news >正文

文本操作基础知识:正则表达式

目录

摘要:

一、语法

二、匹配模式pattern

1、普通字符[  ]

2、限定字符

3、定位字符

4、运算字符(  )

三、修饰符flags

四、各语言的正则使用

1、Python的re

参考资料:


摘要:

常用匹配:[A-C]、[^A-C]、\w、\d、\n、\r、\t、*、+、?、{n,m}。

python的re.findall函数

一、语法

/pattern/flags

        pattern:表示匹配模式,需要匹配的具体内容。

        flags:表示修饰符。

二、匹配模式pattern

1、普通字符[  ]

        匹配多个字符条件要用[],单个字符无需使用中括号括起来。例:/A/g和/[AB]/g。二者的区别在于前者只匹配单个字符A,而后者匹配单个字符A或B。

符合解释
[ABC]匹配单个字符
[A-C]匹配A-C单个字符
[^ABC]匹配除了ABC外的单个字符
\S匹配非空字符,不包括回车换行
\s匹配空字符,包括回车换行
\w匹配字母、、数字、下划线等同于 [A-Za-z0-9_]
\d匹配单个数字等同于[0-9]
\t匹配一个制表符
\v匹配一个垂直制表符

2、限定字符

普通字符只能匹配单个,限定字符可以匹配多个连起来的,主要用于匹配字符串。

符号解释
.匹配除了换行符外的单个字符等同于[^\n\r]
*匹配子表达式子零次或多次,例:O*
+匹配子表达式一次或多次,例:O+
?匹配子表达式零次或一次,例:O?
\转义字符,用于匹配特殊字符。
|表示或
{n}

匹配固定n个字符,例:O{2}匹配food。

{n,}至少匹配n次。
{n,m}至少匹配n次,至多匹配m次。

3、定位字符

^匹配字符段落的开头,$匹配段落的结尾。

符号

解释

^

匹配字符串开头

$

匹配字符串结尾

\b

匹配单词边界

\B

匹配非单词边界

案例:匹配字符串开头

        字符段开头会有一个非可见的字符,匹配的是这个,^he则是匹配he开头的字符段(这种状态要加上多行模式。

4、运算字符(  )

 了解即可,以下做个简单的介绍.。

字符解释
(?=pattern)匹配 pattern 但不获取匹配结果(不包括匹配模式字符)。
(?:pattern)匹配 pattern 但获取匹配结果(包括匹配模式字符)
(?!pattern)匹配不在pattern内的字符(不包括匹配模式字符)。
(?<=pattern)与(?=pattern)类似,只不过(?=pattern)只能放在查询字符串末尾,(?<=pattern)只能放在查询字符串开头。
(?<!pattern)与(?!pattern)类似,只不过(?!pattern)只能放在查询字符串末尾,(?<!pattern)只能放在查询字符串开头。

测试:?: 和 ?=

前者进行了结果获取。

 后者只是匹配,并没有获取结果。

三、修饰符flags

常用的修饰符为//i和//g,可以混合搭配使用。

案例:全局忽略大小写匹配ABC字符串

/ABC/gi

四、各语言的正则使用

1、Python的re

要引入re库:import re

import re

        Python的re库,无需按照正则表达式的语法,也就是两个双斜杠,修饰符模块由于python自定,这里举例常用的两个函数一个是全局搜索re.findall和全局替换re.sub。

python正则修饰符模块

 re模块中flags的常用属性:
标志位,用于控制正则表达式的匹配方式。
- re.I:忽略大小写
- re.L:表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
- re.M:多行模式
- re.S:即为 . ,并且包括换行符在内的任意字符(.不包括换行符)
- re.U:表示特殊字符集 \w, \W, \b, \B, \s, \S, \d, \D 依赖于 Unicode 字符属性数据库
- re.X:为了增加可读性,忽略空格和 # 后面的注释

案例:re.findall全局搜索返回list

findall:查找整个字符串,返回一个list
 - 语法:re.findall(pattern, string, flags=0)
 - 解释:pattern:表示模式字符串,由要匹配的正则表达式转换而来。
        string:表示要匹配的字符串。
        flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写

import re
str="Sunlan love apple lSunlan" 
c=re.findall("[A-Z]",str,re.I)
print(c)

案例:re.sub全局替换返回

sub:查找字符串中所有匹配的数据进行替换
 - 语法:re.sub(pattern, repl, string[,count=0][,flags=0])
 - 解释:pattern:表示模式字符串,由要匹配的正则表达式转换而来。
        repl:表示替换的字符串。
        string:表示要匹配的字符串。
        count:可选参数,表示模式匹配后替换的最大次数,默认值为0,表示替换所有的匹配值。
        flags:可选参数,表示标志位,用于控制匹配方式,如是否区分字母大小写。

import re
str="Sunlan love apple lSunlan" 
str=re.sub(" lSunlan","s",str)
print(str)

参考资料:

正则表达式 – 简介 | 菜鸟教程

正则表达式在线测试 | 菜鸟工具

相关文章:

文本操作基础知识:正则表达式

目录 摘要&#xff1a; 一、语法 二、匹配模式pattern 1、普通字符[ ] 2、限定字符 3、定位字符 4、运算字符( ) 三、修饰符flags 四、各语言的正则使用 1、Python的re 参考资料&#xff1a; 摘要&#xff1a; 常用匹配&#xff1a;[A-C]、[^A-C]、\w、\d、\n、\r、…...

【Scrapy】Scrapy教程6——提取数据

前一小节我们拿到了页面的数据,那页面中那么多内容,我们想要其中的部分内容,该如何获取呢?这就需要对我们下载到的数据进行解析,提取出来想要的数据,这节就讲讲如何提取数据。 引入 我们编辑保存下来的shouye.html文件看下,发现这是什么鬼,全是如下图的代码。 没错…...

PHP 网络编程介绍

PHP 学习资料 PHP 学习资料 PHP 学习资料 在当今数字化时代&#xff0c;网络编程是开发各类应用必不可少的技能。PHP 作为一门广泛应用于 Web 开发的编程语言&#xff0c;同样具备强大的网络编程能力。接下来&#xff0c;我们将深入探讨 PHP 中网络连接的建立、Socket 编程、…...

【C语言】C语言 食堂自动化管理系统(源码+数据文件)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 【C语言】C语言 食堂自动化管理系统&#xff08;源…...

mybatis存储过程返回list

在MyBatis中&#xff0c;要想通过调用存储过程返回一个List集合&#xff0c;你需要在Mapper接口中定义一个方法&#xff0c;并使用Param注解来传递存储过程的参数。同时&#xff0c;你需要在Mapper XML文件中配置相应的<select>标签&#xff0c;并指定statementType"…...

【vue】nodejs版本管理利器:nvm

nvm&#xff08;Node Version Manager&#xff09;即 Node 版本管理器&#xff0c;是一个用于在系统中轻松安装、管理和切换不同版本 Node.js 的工具。 在实际开发中&#xff0c;不同的项目可能基于不同版本的 Node.js 构建。比如一个旧项目依赖于 Node.js 12.x 版本的特定功能…...

负载测试工具有哪些?

Apache JMeter Apache JMeter 是一款开源的性能测试工具&#xff0c;主要用于对 Web 应用程序进行功能、负载和压力测试。JMeter 支持多种协议和技术&#xff0c;包括 HTTP, HTTPS, FTP 和 WebSocket 等。通过模拟大量并发用户访问来评估应用程序的表现1。 jmeter -n -t testp…...

路由基础 | 路由引入实验 | 不同路由引入方式存在的问题

注&#xff1a;本文为 “路由基础 | 路由表 | 路由引入” 相关文章合辑。 未整理去重。 路由基本概念 1—— 路由表信息、路由进表以及转发流程、最长掩码匹配原则 静下心来敲木鱼已于 2023-11-26 14:06:22 修改 什么是路由 路由就是指导报文转发的路径信息&#xff0c;可以…...

网络安全不分家 网络安全不涉及什么

何为网络安全 信息安全是指系统的硬件、软件及其信息受到保护&#xff0c;并持续正常运行和服务。信息安全的实质是保护信息系统和信息资源免受各种威胁、干扰和破坏&#xff0c;即保证信息的安全性。 网络安全是指利用网络技术、管理和控制等措施&#xff0c;保证网络系统和…...

智能编程助手功能革新与价值重塑之:GitHub Copilot

引言&#xff1a; GitHub Copilot 的最新更新为开发者带来了显著变化&#xff0c;其中 Agent Mode 功能尤为引人注目。该模式能够自动识别并修复代码错误、自动生成终端命令&#xff0c;并具备多级任务推理能力&#xff0c;这使得开发者在开发复杂功能时&#xff0c;可大幅减少…...

wordpress企业官网建站的常用功能

WordPress 是一个功能强大的内容管理系统(CMS)&#xff0c;广泛用于企业官网的建设。以下是企业官网建站中常用的 WordPress 功能&#xff1a; 1. 页面管理 自定义页面模板&#xff1a;企业官网通常需要多种页面布局&#xff0c;如首页、关于我们、产品展示、联系我们等。Wor…...

讯方·智汇云校华为官方授权培训机构

1.官方授权 讯方智汇云校是华为领先级授权培训机构&#xff08;华为授权培训合作伙伴&#xff08;HALP&#xff09;体系&#xff0c;分为认证、优选、领先三个等级&#xff0c;领先级是HALP最高级&#xff09;&#xff0c;代表着华为对培训合作伙伴在专业能力、师资队伍、合作…...

C语言中的文件

文章目录 文件1. 流1.1 文件缓冲1.2 标准流1.3 文本文件和二进制文件 2. 打开/关闭文件2.1 fopen2.2 fclose 3. 读写文件3.1 fgetc & fputc3.2 fgets & futs3.3 fscanf & fprintf3.4 fread & fwrite 4. 文件定位5. 错误处理5.1 errno 文件 1. 流 在 C 语言中…...

利用分治策略优化快速排序

1. 基本思想 分治快速排序&#xff08;Quick Sort&#xff09;是一种基于分治法的排序算法&#xff0c;采用递归的方式将一个数组分割成小的子数组&#xff0c;并通过交换元素来使得每个子数组元素按照特定顺序排列&#xff0c;最终将整个数组排序。 快速排序的基本步骤&#…...

前端工程化的具体实现细节

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

数据分析--数据清洗

一、数据清洗的重要性&#xff1a;数据质量决定分析成败 1.1 真实案例警示 电商平台事故&#xff1a;2019年某电商大促期间&#xff0c;因价格数据未清洗导致错误标价&#xff0c;产生3000万元损失医疗数据分析&#xff1a;未清洗的异常血压值&#xff08;如300mmHg&#xff…...

✨1.HTML、CSS 和 JavaScript 是什么?

✨✨ HTML、CSS 和 JavaScript 是构建网页的三大核心技术&#xff0c;它们相互协作&#xff0c;让网页呈现出丰富的内容、精美的样式和交互功能。以下为你详细介绍&#xff1a; &#x1f98b;1. HTML&#xff08;超文本标记语言&#xff09; 定义&#xff1a;HTML 是一种用于描…...

QT--常用对话框

文章目录 前言一、颜色对话框颜色对话框代码解析 二、文本对话框文本对话框代码解析 三、输入对话框1.整型输入对话框2.浮点数输入对话框3.条目对话框 四、提示对话框1.提问对话框2.消息对话框3.警告对话框4.关键对话框 五、进度对话框六、向导对话框总结 前言 今天介绍几种标…...

基于 Ollama 工具的 LLM 大语言模型如何部署,以 DeepSeek 14B 本地部署为例

简简单单 Online zuozuo :本心、输入输出、结果 文章目录 基于 Ollama 工具的 LLM 大语言模型如何部署,以 DeepSeek 14B 本地部署为例前言下载 Ollama实际部署所需的硬件要求设置 LLM 使用 GPU ,发挥 100% GPU 性能Ollama 大模型管理命令大模型的实际运行资源消耗基于 Ollam…...

图的最小生成树算法: Prim算法和Kruskal算法(C++)

上一节我们学习了最短路径算法, 这一节来学习最小生成树. 最小生成树(Minimum Spanning Tree, MST)算法是图论中的一种重要算法, 主要用于在加权无向图中找到一棵生成树, 使得这棵树包含图中的所有顶点, 并且所有边的权重之和最小. 这样的树被称为最小生成树. 最小生成树广泛应…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...