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

正则表达式从放弃到入门(1):“正则表达式”是什么?

正则表达式从放弃到入门(1):“正则表达式”是什么?

本博文转载自
这是一篇”正则表达式”扫盲贴,如果你还不理解什么是正则表达式,看这篇文章就对了。

如果你已经掌握了”正则表达式”,就不用再在这篇文章上浪费时间了。

坚持看到底,就能明白什么是”正则表达式”。

我们先不解释什么是”正则表达式”,因为在本来就不明白的情况下,再去看一些专业的解释,会更加不明白。

所以,我们先来描述一个小场景,看完这个场景,你就能明白什么是”正则表达式”。

首先,我们在桌面上创建一个txt文本文件,将这个文件命名为”正则.txt”,如下
在这里插入图片描述
文件创建完毕后,双击此文件即可使用windows中的”记事本”打开此文件,文件内容如下图所示
在这里插入图片描述
可以看到,文件中有3行文本,假设,此时我们想要在文本中搜索”hello”这个词,我们该怎么办呢?

没错,按下快捷键 “Ctrl + F”,即可在”记事本”中搜索”hello”字符串,如下

在这里插入图片描述
可以看到,上图中,hello一共出现过3次,

第一行与第三行的”hello”都位于行首

第二行的hello位于行尾

但是不管hello字符串位于哪里,文本中一共有3个”hello”字符串

所以,”hello”可以”被匹配到”3次。

好了,我们已经搜索到了hello字符串,满足了我们的需求。

但是,现在需求变了。

现在我们想要搜索 “位于行首的hello字符串” 。

也就是说,字符串不仅要是”hello”,而且还要位于行首,需要同时满足这两个条件的字符串才算满足条件。

那么,上图第二行中的hello字符串则不符合我们的要求,因为虽然第二行中包含”hello”字符串,但是它并不位于行首,而”第一行的hello”与”第三行的hello”都位于行首,所以,如果按照要求,只有第一行与第三行中的hello能被搜索到。

那么,我们应该怎样去搜索呢?

我们刚才的需求就是:”找到文本中位于行首的hello字符串”

让你搜索,你会怎么做?

没错,我们需要有一种方法,这种方法能够告诉计算机,只查找”位于行首的hello字符串”

这个时候,就需要依靠”正则表达时式”了,”正则表达式”可以帮助我们实现这样的功能,但是,由于windows记事本并不支持”正则表达式”,所以,我们无法通过”记事本”完成上述需求,我们只能安装其他程序,并且这个程序必须支持”正则表达式”,此处,我们安装”sublime text”或者”notepad++”,它们是windows系统下比较常用的、流行的文本编辑器,此处以”sublime text”为例,使用”sublime text”打开示例中使用到的文本文件,如下图所示
在这里插入图片描述
同样,在”sublime text”中使用快捷键”ctrl + F”,可以搜索hello字符串,如下图所示。
在这里插入图片描述
如上图所示,3个hello字符串都能被搜索到。

那么,回归到刚才的话题,我们怎样才能只搜索”位于行首的hello字符串”呢?方法如下

首先,点击下图中红线标注部分的按钮,这个按钮被选中后,”sublime text”才会以”正则表达式”模式工作。

然后在搜索框中输入”^hello” (符号”^”为键盘中数字键6对应的符号),即可达到我们的要求,即只查找位于行首的”hello”字符串。
在这里插入图片描述
查找结果如下图所示,只有位于行首的hello被匹配到了。
在这里插入图片描述
我们可以把上例中的”^hello”理解为”正则表达式”,这个”正则表达式”想要表达的意思就是”位于行首的hello字符串”。

到目前为止,我们已经初步的接触到了”正则表达式”,但是我们还没有解释过”正则表示式”。

现在,回过头来,再看看什么是正则表示式。

如下描述引用自百度百科

正则表达式,又称 规则表达式。正则表达式的英语原文为:Regular Expression,常简写为regex、regexp或RE,
正则表达式是计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

现在再来看这个专业的解释,是不是比较容易理解了?”正则表达式”又称”规则表达式”,使用”正则表达式”可以让我们”表达出”某种规则,就像刚才使用到的”hello”,我们使用这个正则表达式,表达出了我们的想法,我们的想法就是搜索出位于行首的hello字符串,在正则表达式中,””就表示行首,所以,”^hello”就是表示位于行首的hello字符串,这就是我们想要表达的”规则”,这就是”正则”,我们利用这个正则表达式,检索出了”符合规则”的文本。

那么现在,你对”正则表达式”应该有了初步的概念了吧。

再啰嗦一遍,”正则”就是”规则”,”正则表达式”就是能够让我们表达出自己想法的规则,只要学会了这种规则,我们就能够表达自己的想法。

好了,”正则扫盲阶段”完成。

其实,只要你自己理解了什么是正则,再去学习正则就很快了,怕就怕,你从心里觉得自己不会,那样就没有办法继续了。

希望这篇文章能够帮助到需要的人。

相关文章:

正则表达式从放弃到入门(1):“正则表达式”是什么?

正则表达式从放弃到入门(1):“正则表达式”是什么? 本博文转载自 这是一篇”正则表达式”扫盲贴,如果你还不理解什么是正则表达式,看这篇文章就对了。 如果你已经掌握了”正则表达式”,就不用再…...

SQL解惑 - 谜题2

文章目录 一、谜题描述二、分析三、答案四、总结 一、谜题描述 创建一个记录雇员缺勤率的数据库。使用的表结构如下:Absenteeism 主键:PRIMARY KEY (emp_id, absent_date) 字段名字段类型字段中文名字段描述emp_idINTERGER雇员id-absent_dateSTRING缺勤…...

FWT+高维前缀和:Gym - 103202M

https://vj.imken.moe/contest/597216#problem/F 考虑两个人的集合分别为 i , j i,j i,j,那么我们令 f ( i ⊗ j ) f(i\otimes j) f(i⊗j),其中 f ( s ) f(s) f(s) 表示两个人不同集合恰好为 s s s,显然 f ( s ) f(s) f(s) 可以FWT求…...

【C++】string类的接口综合运用

目录​​​​​​​ 介绍: 一,string对象的构建 二,string类对象的容量操作 介绍: string容器我们之前已经粗略了解了基本增添、修改、删除、插入等基本功能,这里就不再做过多说明,接下来我们全面并详细…...

分布式ID生成框架Leaf升级踩坑

背景: 在项目中需要一个统一的拿单号等唯一ID的服务,就想起了之前用到的leaf,但是因为项目要求,leaf的版本不符合,需要做一些升级 项目地址:https://github.com/Meituan-Dianping/Leaf 升级点&#xff1…...

常用的设计模式

文章目录 常用的设计模式:一、单例模式3、懒汉式 - 懒汉式非线程安全4、饿汉式 - 线程安全5、懒汉式和饿汉式区别6、双重检查锁定7、应用场景 二、工厂模式1、简单工厂模式2、工厂模式3、抽象工厂4、总结 三、代理模式1、静态代理2、动态代理jdk自带动态代理 3、Cgl…...

git的相关实用命令

参看文章:https://blog.csdn.net/qq_21688871/article/details/130158888 http://www.mobiletrain.org/about/BBS/159885.html 1、git commit后,但发现文件有误,不想push(提交到本地库,回退到暂存区) git reset --sof…...

【使用`model.status`来获取gurobi求解过程中的模型状态】

在Gurobi中,你可以使用model.status来获取求解过程中的模型状态。可以使用了model.status来检查模型是否找到最优解。模型状态是一个Gurobi的常量,表示了求解过程中的不同状态。 以下是一些常见的模型状态: GRB.OPTIMAL: 最优解被找到。GRB…...

【UGUI】Unity教程:实现物品的拖拽功能

大家好,今天,我们将一起学习如何在Unity中实现物品的拖拽功能。这是一个非常实用的技能,无论你是在制作RPG游戏的背包系统,还是在制作策略游戏的建筑放置功能,都会用到这个技能。那么,让我们开始吧&#xf…...

【奇淫技巧】两数交换

【奇淫技巧】两数交换 临时变量法:借助中间变量加减法:不使用中间变量异或法:不使用中间变量语法糖:某些编程语言支持交换语法糖借助函数,不交换 前提:待交换的两个元素,分别用a,b表示&#xf…...

Java核心知识点整理大全26-笔记

目录 27. Storm 7.1.1. 概念 27.1.1. 集群架构 27.1.1.1. Nimbus(master-代码分发给 Supervisor) 27.1.1.2. Supervisor(slave-管理 Worker 进程的启动和终止) 27.1.1.3. Worker(具体处理组件逻辑的进程&#xff…...

“上云”还是“下云”?探云计算的下一站未来!

引言 10 月 27 日,X(原Twitter)工程技术发布帖子称,在过去的一年里,技术团队优化了 X 的云服务使用方式,着手将更多工作负载迁往本地基础设施。这一转变使 X 每月的云成本降低了 60%。所有媒体、Blob 存储均…...

Linux中top命令输出日志分析?

以下是对输出的各部分的解释: 09:54:34:系统当前时间。up 161 days, 2:08:系统已经运行了161天2小时8分钟。5 users:有5个用户登录系统。load average: 0.13, 0.08, 0.05:系统的1分钟、5分钟、15分钟的平均负载。负载…...

执行栈和执行上下文

前端面试大全JavaScript执行栈和执行上下文 🌟经典真题 🌟执行上下文 🌟栈数据结构 🌟执行上下文生命周期 🌟真题解答 🌟总结 🌟经典真题 谈谈你对 JavaScript 执行上下文栈理解 &#…...

7、单片机与W25Q128(FLASH)的通讯(SPI)实验(STM32F407)

SPI接口简介 SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根…...

stream流和方法引用

1.Stream流 1.1体验Stream流【理解】 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素把集合中所有以"张"开头的元素存储到一个新的集合把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集…...

Redis——某马点评day01——短信登录

项目介绍 导入黑马点评项目 项目架构 基于Session实现登录 基本流程 实现发送短信验证码功能 controller层中 /*** 发送手机验证码*/PostMapping("code")public Result sendCode(RequestParam("phone") String phone, HttpSession session) {// 发送短信…...

AES加密技术:原理与应用

一、引言 随着信息技术的飞速发展,数据安全已成为越来越受到重视的领域。加密技术作为保障数据安全的重要手段,在信息安全领域发挥着举足轻重的作用。AES(Advanced Encryption Standard)作为一种对称加密算法,自1990年…...

Unity中PlayerPrefs在PC上存储位置总结

编辑器下和EXE存储位置是不同的,这也不难理解,是为了避免存储位置相同导致开发和测试冲突。 编辑器下位置:HKEY_CURRENT_USER\Software\Unity\UnityEditor\ExampleCompanyName\ExampleProductName EXE位置:HKEY_CURRENT_USER\Sof…...

消融实验:深度学习的关键分析工具

消融实验:深度学习的关键分析工具 在深度学习和机器学习领域,消融实验(Ablation Study)是一种重要的实验方法,用于理解和评估模型的各个组成部分对其整体性能的贡献。通过这种方法,研究人员可以更深入地了…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

JVM垃圾回收机制全解析

Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...