当前位置: 首页 > 科技观察

【教程】正则表达式技巧图解

时间:2023-03-12 22:38:06 科技观察

本博客是一本关于正则表达式(regex)的图文并茂的教程,专为那些从未使用过正则表达式,想尝试却又望而生畏的人而设计。简要介绍。一个好的正则表达式看起来像魔术,但请记住:任何足够先进的技术都与魔术没有区别。那么,让我们揭开正则表达式的神秘面纱吧!如果你了解正则表达式,它会突然变成一个超级快速和强大的工具......但你需要先了解它,老实说我认为新手会被它吓倒!让我们从基础开始。什么是正则表达式(regex)?他们有什么用?初学者的正则表达式从本质上讲,正则表达式是定义搜索模式的字符序列。正则表达式通常用于grep等工具中,以在较长的文本字符串中查找模式。考虑以下cat.txt文件:catcat2dog如果我们使用正则表达式cat搜索匹配项,我们找到以下匹配项:catcat2高级用户需要注意本文中存在技术错误,即正则表达式和使用正则表达式工具(如grep)混淆。正则表达式作用于字符,而不是单词需要重申的重要一点是,正则表达式作用于字符,而不是单词。串联是隐含的。如果我们使用正则表达式搜索模式cat,我们将找不到单词“cat”,而是字符c、a和t。点和星号的最基本字符是单个字符,例如a、b、c等。现在让我们介绍以下两个特殊字符。这。(点)字符可以匹配*任何单个字符*。例如,如果我们搜索c.t,它将匹配从cat到c0t或cAt的任何内容,并将匹配任何单个字符c+任何字符+单个字符t。*(星号)字符有点困难。它修改它前面的字符,然后匹配该字符的*零个或多个字符*。确实如此。例如,cat*将匹配cat、catt、cattttt和ca。实例分析:猫吃了我的作业假设我们逐行读取一个文件,第一行是这样的:Thecatatemyhomework。让我们看看如何匹配这一行中的模式猫。我们首先将模式的第一个字符与句子中的第一个字符进行匹配。如果未找到匹配项,则在从模式的第一个字符开始之前跳转到该行的下一个字符。如果找到匹配项,我们会跳转到该模式和该行的下一个字符,然后重复该过程。当我们找到整个模式的匹配项时,返回找到匹配项的行。这是正则表达式最基本和最常用的功能,即在较大的字符串中查找较小的搜索模式。说到这里,想必大家对什么是正则表达式以及它的两个特殊字符都有了大概的了解:.(点)和*(星号)。接下来,我将为您介绍更多其他内容。正则表达式三叉戟正则表达式的各个部分可以由三个不同的部分组成:锚字符集修饰符这三部分组成了正则表达式的三叉戟!让我们从三叉戟的第一部分开始:锚!AnchorAnchor指定每一行的模式位置。以下是两个最重要的锚点:^(插入符号)将模式固定到行的开头。例如,模式^1匹配任何以1开头的行。$(美元符号)将模式固定到句子的末尾。例如,9$匹配任何以9结尾的行。请注意,在上述两种情况下,锚点必须分别位于模式的开头和结尾。^1匹配行首的1,但1^匹配1后跟^。类似地,1$匹配以1结尾的行,但$1匹配行中任意位置后跟一个1的美元符号。字符集三叉戟的第二部分:字符集。字符集是正则表达式的基础。单个字符,例如a,是最基本的字符集(一组元素)。但是像[0-9]这样的正则表达式可以匹配任何数字,或者如果你能回忆起*的意思,你可以使模式[0-9][0-9](这个模式匹配什么留给读者练习).其他一些重要的字符集:[0-9]匹配0…9中的任何数字[a-z]匹配任何小写字母[A-Z]匹配任何大写字母我们还可以组合多个字符集:[A-ZA-Z0-9]匹配任何大写或小写字母和一位数字。这部分修饰符的内容不深入展开。以前面遇到的修饰符*(星号)为例。修饰符改变其前面字符的含义。还有许多其他修饰符,但以*为例进行讨论是一个很好的起点。如下:让我们快速将文本转储到文件中。$echo"Thecatjumpslongtime\nThenwealsohavethefactthatthesearewords.\n1234thisisatestpostpleaseignore.">>grep.txt这是当前文件中的内容。$catgrep.txtThecatjumpslongtime然后我们也有一个事实,那就是这些是单词。1234这是最新的帖子,请忽略。寻找猫。$grep"cat"grep.txtThecatjumpslongtim查找以数字^[0-9]开头的任意行。$grep"^[0-9]"grep.txt1234thisisatestpost请忽略。就是这样!您刚刚使用了正则表达式。奇妙。总结回顾一下这篇博客的内容:正则表达式的基本功能;正则表达式的三个主要组成部分:锚点、字符集和修饰符。.(点)、*(星号)、^(插入符号)和$(美元符号)。一些字符集[0-9]、[a-z]、[A-Z]及其组合。本博客的目的是通过图文并茂的介绍,让用户更容易学习正则表达式。如果你能克服技术上的困难,你最终可以掌握这个相对简单但功能强大的正则表达式工具,为任何数据科学家带来无价的价值。