当前位置: 首页 > 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)算法是图论中的一种重要算法, 主要用于在加权无向图中找到一棵生成树, 使得这棵树包含图中的所有顶点, 并且所有边的权重之和最小. 这样的树被称为最小生成树. 最小生成树广泛应…...

保姆级教程:在uni-app中集成FFmpeg 7.1播放RTSP流(Android原生插件实战)

在uni-app中集成FFmpeg 7.1实现RTSP流播放的完整指南 跨平台开发中处理实时视频流一直是技术难点&#xff0c;尤其是RTSP协议的视频流播放。本文将手把手带你完成从FFmpeg编译到uni-app插件集成的全流程&#xff0c;解决Android平台下RTSP播放的痛点问题。 1. 环境准备与FFmp…...

别再只会按Auto了!频谱仪RBW/VBW参数设置实战指南(以罗德与施瓦茨FSV为例)

频谱仪RBW/VBW参数设置实战指南&#xff1a;突破Auto模式依赖症 刚接触频谱分析仪时&#xff0c;那个绿色的Auto按钮简直是救命稻草——一键解决所有参数设置烦恼。但当你第一次尝试测量一个微弱信号时&#xff0c;突然发现Auto模式给出的结果完全不可靠&#xff1b;或者当你在…...

破解工业数据孤岛:DB-GPT与OPC UA的智能融合方案

破解工业数据孤岛&#xff1a;DB-GPT与OPC UA的智能融合方案 【免费下载链接】DB-GPT open-source agentic AI data assistant for the next generation of AI Data products. 项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT 在工业4.0时代&#xff0c;数据…...

NLI-DistilRoBERTa应用案例:多语言文本分析助手搭建指南

NLI-DistilRoBERTa应用案例&#xff1a;多语言文本分析助手搭建指南 1. 项目概述与核心能力 自然语言推理(Natural Language Inference, NLI)是自然语言处理中的一项基础任务&#xff0c;用于判断两个句子之间的逻辑关系。基于DistilRoBERTa的NLI模型通过轻量化的设计&#x…...

手把手教你:用Wireshark抓包搞定‘哑巴’设备的IP地址(附三种情况实战)

工业设备IP定位实战&#xff1a;Wireshark抓包全流程解析 车间里那台新到的PLC控制器静静躺在工作台上&#xff0c;除了一个闪烁的绿色网口指示灯&#xff0c;没有任何显示界面。老张盯着它叹了口气——这已经是本周第三次遇到"哑巴"设备了。在工业物联网和智能硬件普…...

Pixel Epic智识终端参数详解:‘逻辑发散概率’对研报创新性影响分析

Pixel Epic智识终端参数详解&#xff1a;逻辑发散概率对研报创新性影响分析 1. 产品概述与核心价值 Pixel Epic智识终端是一款革命性的研究报告辅助工具&#xff0c;它将枯燥的科研过程转化为一场充满探索乐趣的像素RPG冒险。基于AgentCPM-Report大模型构建&#xff0c;这款工…...

IEEE论文排版避坑:LaTeX作者栏的‘数字上标’与‘星号脚注’到底怎么选?一篇讲清

IEEE论文排版进阶指南&#xff1a;作者标注格式的选择逻辑与实战技巧 在学术写作的精密工程中&#xff0c;IEEE论文排版常被视为LaTeX用户的"终极测试场"。特别是作者信息标注这个看似简单的环节——数字上标还是星号脚注&#xff1f;这个问题困扰过无数研究者。我曾…...

保姆级教程:在STM32F407上为FreeRTOS V9.0配置SystemView V3.52(附完整源码包)

STM32F407与FreeRTOS深度集成SystemView全流程实战指南 如果你正在使用STM32F407开发板运行FreeRTOS&#xff0c;却苦于无法直观观察任务调度和中断行为&#xff0c;那么SystemView将成为你的"系统透视镜"。本文将手把手带你完成从零配置到可视化分析的全过程&#…...

批量处理JSON文件的Python脚本

在日常的数据处理工作中,我们经常会遇到需要批量读取和处理同类文件的情况。今天我们将探讨如何利用Python中的pathlib库来遍历一个目录中的所有JSON文件,并将其内容读取到Pandas DataFrame中进行进一步分析。 背景 假设我们有一个目录,里面包含多个JSON格式的文件,每个文…...

通过受管控的控制平面加速商品陈列优化

作者&#xff1a;来自 Elastic Alexander Marquardt, Honza Krl 及 Taylor Roy 搜索行为的变化不应该需要一个工程工单。了解受管控的控制平面如何让业务团队在数小时内更新搜索策略&#xff0c;而无需部署&#xff0c;也无需承担风险。 Elasticsearch 新手&#xff1f;参加我…...