正则表达式从放弃到入门(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字符串"。

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

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

如下描述引用自百度百科

text 复制代码
正则表达式,又称 规则表达式。

正则表达式的英语原文为:Regular Expression,常简写为regex、regexp或RE,
正则表达式是计算机科学的一个概念。

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

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

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

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

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

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

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

相关推荐
czhc114007566319 分钟前
LINUX 820 shell:shift,expect
linux·运维·excel
元清加油24 分钟前
【Goland】:协程和通道
服务器·开发语言·后端·网络协议·golang
望获linux1 小时前
【实时Linux实战系列】基于实时Linux的物联网系统设计
linux·运维·服务器·chrome·php
yuxb731 小时前
Linux 文本处理与 Shell 编程笔记:正则表达式、sed、awk 与变量脚本
linux·笔记·正则表达式
刘一说2 小时前
CentOS 系统 Java 开发测试环境搭建手册
java·linux·运维·服务器·centos
wdxylb7 小时前
云原生俱乐部-shell知识点归纳(1)
linux·云原生
飞雪20078 小时前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
路溪非溪9 小时前
关于Linux内核中头文件问题相关总结
linux
海绵不是宝宝81710 小时前
连接远程服务器上的 jupyter notebook,解放本地电脑
服务器·jupyter·github
Lovyk11 小时前
Linux 正则表达式
linux·运维