当前位置:首页 > 教育 >

正则表达式详解20分钟(正则表达式30分钟入门教程)

来源:原点资讯(m.360kss.com)时间:2024-05-31 05:47:23作者:YD166手机阅读>>

选自janmeppe.com

作者:Jan Meppe机器之心编译参与:韩放、杜伟

这篇博客是关于正则表达式(regex)的插图指南,旨在为那些从来没有使用过正则表达式,想尝试但又望而生畏的新手提供一个简单介绍。

所以,欢迎使用正则表达式…

正则表达式详解20分钟,正则表达式30分钟入门教程(1)

对于大多数没有接受过正式 CS 教育的人来说,正则表达式似乎只有最核心的 Unix 程序员才敢碰。

一个好的正则表达式看起来像魔法,但请记住:任何足够先进的技术都无法与魔法区分开来。

所以,就让我们揭开正则表达式的神秘面纱!

如果你理解正则表达式,它会突然变成一个超快速和强大的工具……但你首先需要理解它,老实说,我觉得新手可能会对它望而生畏!

让我们从基础开始。正则表达式(regex)是什么?它们的用途是什么?

Regex 新手上路

本质上来看,正则表达式是定义一种搜索模式的字符序列。

正则表达式通常用于 grep 等工具中,以在较长文本字符串中查找模式。

考虑以下一个 cat.txt 文件:

catcat2dog

如果我们使用正则表达式 cat 来搜索匹配项,我们会找到以下匹配项:

catcat2

高级用户需要注意的是,本文存在一个技术上的错误,即正则表达式和使用正则表达式的工具(如 grep)混为了一谈。

正则表达式适用于字符,而不是单词

需要反复强调的一个重要问题是:正则表达式适用于字符,而不是单词。隐含串联。

正则表达式详解20分钟,正则表达式30分钟入门教程(2)

如果我们使用正则表达式搜索模式 cat,则不会查找单词「cat」,而会查找字符 c、a 和 t。

点和星号

最基本的字符是单个字符,如 a、b、c 等。现在让我们介绍以下两种特殊的字符。

正则表达式详解20分钟,正则表达式30分钟入门教程(3)

.(点)字符可以匹配*任何单个字符*。例如,如果我们搜索 c.t,则将匹配从 cat 到 c0t 或 cAt 的任何内容,并将匹配任何单个字符 c 任何字符 单个字符 t。

*(星号)字符有点困难。它修改它前面的字符,然后匹配该字符的*零个或多个字符*。的确如此。例如,cat*可以匹配 cat、catt、cattttt 以及 ca。

示例分析:The cat ate my homework

假设我们逐行读取一个文件,则第一行如下所示:

The cat ate my homework.

让我们看看如何匹配该行中的模式 cat。

正则表达式详解20分钟,正则表达式30分钟入门教程(4)

我们首先将该模式的首字符与句子中的首字符匹配。

如果找不到匹配项,则跳转至该行中的下一个字符,然后再从模式的首字符开始。

如果我们找到一个匹配项,则将跳转至模式和该行中的下一个字符,然后重复这个过程。当我们找到整个模式的匹配时,返回找到匹配项的行。

这就是正则表达式最基本、最常用的功能,即在较大的字符串中查找较小的搜索模式。

讲到这里,我想大家已经大致了解了什么是正则表达式以及它的两个特殊字符: .(点)和 *(星号)。接下来,我会为大家介绍更多其他内容。

正则表达式三叉戟

正则表达式的各个部分可以由三个不同的组件组成:

  1. 锚点
  2. 字符集
  3. 修饰符

这三部分构成了正则表达式的三叉戟!

正则表达式详解20分钟,正则表达式30分钟入门教程(5)

让我们从三叉戟的第一个部分开始:锚点!

正则表达式详解20分钟,正则表达式30分钟入门教程(6)

锚点

锚点指定个各行的模式位置。下面是两个最重要的锚点:

  • ^(插入符号)将模式固定到行首。例如,模式^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 "The cat jumps long time \nThen we also have the fact that these are words.\n1234 this is a test post please ignore." >> grep.txt

这是现在文件中的内容。

$ cat grep.txtThe cat jumps long timeThen we also have the fact that these are words.1234 this is a test post please ignore.

寻找 cat。

$ grep "cat" grep.txtThe cat jumps long time

寻找任何以数字^[0-9] 开始的任意行。

$ grep "^[0-9]" grep.txt1234 this is a test post please ignore.

就是这样!你刚刚使用了正则表达式。太棒了。

总结

回顾一下这篇博客的内容:

  • 正则表达式的基本功能;
  • 正则表达式的三个主要组件:锚点、字符集和修饰符。
  • .(点)、*(星号)、^(插入符)和$(美元符号)。
  • 一些字符集 [0-9]、[a-z]、[A-Z] 和它们的组合。

这篇博客的目的是通过带插图的介绍使用户更轻松地了解正则表达式。

如果能够克服技术上的困难,则最终可以掌握这种相对简单但功能却很强大的正则表达式工具,从而为任何数据科学家带来宝贵的价值。

原文地址:https://www.janmeppe.com/blog/regex-for-noobs/

,

栏目热文

正则表达式新手教程(正则表达式菜鸟教程)

正则表达式新手教程(正则表达式菜鸟教程)

正则表达式,简单却又复杂,强大却又薄弱,本身的功能很强,但却令人望而却步。作为程序员必须掌握的技能之一,千万别被正则表达...

2024-05-31 05:45:59查看全文 >>

正则表达式简单入门(正则表达式入门经典语句)

正则表达式简单入门(正则表达式入门经典语句)

简介正则表达式(regular expression)是可以匹配文本片段的模式。最简单的正则表达式就是普通字符串,可以匹...

2024-05-31 05:48:26查看全文 >>

歌词中有颠沛流离的歌女生唱的(歌词中有颠沛流离的歌)

歌词中有颠沛流离的歌女生唱的(歌词中有颠沛流离的歌)

古风爱情歌曲《桐花念》专辑封面 满地桐花相思念 日前,由武夷影业集团出品,东方国韵集团制作,田七作词,导演田七、知...

2024-05-31 05:12:14查看全文 >>

人生颠沛流离粤语歌(颠沛流离的粤语歌曲完整版)

人生颠沛流离粤语歌(颠沛流离的粤语歌曲完整版)

音乐推荐1992年,李克勤凭借一首旋律欢快积极励志的《红日》赢得了无数歌迷朋友的心。《红日》作为一个时代的经典作品,让听...

2024-05-31 05:26:24查看全文 >>

白水鸡胸肉煮多久(水煮鸡胸肉一般煮的时间)

白水鸡胸肉煮多久(水煮鸡胸肉一般煮的时间)

鸡胸肉是一种低脂肪高蛋白质的肉类,非常适合减肥者食用,最常见的做法就是水煮。不过,水煮鸡胸肉腥味很重,做不好的话,很难下...

2024-05-31 05:05:36查看全文 >>

正则表达式计算器(正则表达式计算带备注的公式)

正则表达式计算器(正则表达式计算带备注的公式)

Python开发——利用正则表达式实现计算器算法(1)不使用eval()等系统自带的计算方法(2)实现四则混合运算、括号...

2024-05-31 05:55:31查看全文 >>

正则表达式30分钟入门教程(正则表达式30分钟入门教程 deerchao)

正则表达式30分钟入门教程(正则表达式30分钟入门教程 deerchao)

正则表达式30分钟入门教程一些要说的话:如果你没有正则表达式的基础,请跟着教程“一步步来”。请不要大概地扫两眼就说看不懂...

2024-05-31 05:23:32查看全文 >>

绞丝旁怎样写好看图解

绞丝旁怎样写好看图解

这是我在头条分享的第 7 个偏旁。今天分享一个绞丝旁“纟”的书写技巧。四个书写技巧1.绞丝旁由两个“撇折”加一个“提”组...

2024-05-31 05:47:36查看全文 >>

绞丝旁加四个又(绞丝旁加4个又念什么)

绞丝旁加四个又(绞丝旁加4个又念什么)

行楷 | 绞丝旁及例字解析,4张图片学行楷​​ ,...

2024-05-31 05:54:39查看全文 >>

锦绣南歌主题歌谁唱(锦绣南歌电视剧主题歌)

锦绣南歌主题歌谁唱(锦绣南歌电视剧主题歌)

新歌郑云龙《锦绣南歌》OST7月11日,由郑云龙演唱的电视剧《锦绣南歌》人物主题曲《莫失莫忘》上线。 钢琴和弦乐相融的前...

2024-05-31 05:46:49查看全文 >>

文档排行