正则表达式入门书籍_正则表达式入门

正则表达式入门书籍

无论是Linux用户,系统管理员,还是程序员,正则表达式都可以成为工具箱中功能最强大的工具之一。 它也可能是最艰巨的学习之一,但不一定! 尽管有无数种编写表达式的方法,但您不必学习每个开关和标志。 在这个简短的方法中,我将向您展示一些使用正则表达式的简单方法,这些方法可以让您立即运行,并共享一些后续资源,如果愿意的话,可以使您成为正则表达式的主人。

快速概述

正则表达式,也称为“ regex”模式或什至“ regular statement”,简单来说就是“定义搜索模式的字符序列”。 这个想法是在1950年代提出的,当时斯蒂芬·科尔·克莱因(Stephen Cole Kleene)写了一个他称为“常规语言”的思想的描述,其中一部分被称为“克莱因定理”。 在很高的层次上,它表示如果可以定义语言的元素,则可以编写表达式以匹配该语言内的模式。

g/re/p ,这实际上意味着 “对这个正则表达式进行全局搜索并打印行”。 凉!

为什么我们需要正则表达式

如上所述,正则表达式用于定义模式,以帮助我们在匹配该模式的对象上“匹配”或“查找”对象。 例如,当使用find命令时,这些对象可以是文件系统中的文件,也可以是文件中的文本块,例如,我们可以使用grepawkvised进行搜索。

从基础开始

让我们从头开始。 这是一个很好的起点。

每个人似乎都学习的第一个正则表达式可能是您已经知道并且没有意识到它是什么的正则表达式。 您是否曾经想过打印目录中的文件列表,但是时间太长了? 也许您看到有人键入\*.gif在目录中列出GIF图像,例如:


   
   
$ ls *.gif

那是一个正则表达式!

在编写正则表达式时,某些字符具有特殊含义,以使我们能够从仅匹配字符变为匹配整个字符集。 在这种情况下, *字符(也称为“ star”或“ splat”)代替文件名,并允许您匹配所有以.gif结尾的文件。

搜索文件中的模式

regex foo培训中的下一步是在文件中搜索模式,尤其是使用replace模式进行快速更改。

两种常见的方法是:

  1. 使用vi打开文件,搜索模式并进行更改(甚至使用replace自动进行更改)。
  2. 使用又名“流编辑器”,以编程方式在文件中搜索并进行更改。

首先,使用vi编辑以下文件来学习一些正则表达式:


   
   
The quick brown fox jumped over the lazy dog.
Simple test
Harder test
Extreme test case
ABC 123 abc 567
The dog is lazy

现在,在vi中打开此文件后,让我们看一些正则表达式示例,这些示例将帮助我们在其中找到一些匹配的字符串,甚至自动替换它们。

为了使事情变得简单,我们将vi设置为忽略大小写。 键入set ic以启用不区分大小写的搜索。

现在,要开始在vi中搜索,请键入/字符,后跟您的搜索模式。

在一行的开头或结尾搜索内容

要查找以“ Simple”开头的行,请使用以下正则表达式模式:


   
   
/^Simple

请注意,在下面的图像中,仅突出显示了以“ Simple”开头的行。 克拉符号( ^ )与“开始于”的正则表达式等效。

'Simple' highlighted

接下来,让我们使用$符号,在正则表达式中该符号是“结尾为”。


   
   
/test$

'Test' highlighted

看到它如何突出显示以“ test”结尾的两行? 另外,请注意,第四行中有单词test,但没有结尾,因此该行未突出显示。

这就是正则表达式的强大功能,它使您能够轻松快速地浏览大量匹配项,但只对精确匹配项进行深入分析。

测试发生频率

为了进一步扩展您在正则表达式中的技能,让我们看一些更常见的特殊字符,这些特殊字符使我们不仅可以查找匹配的文本,还可以查找匹配的模式。

频率匹配字符:

字符 含义
* 零个或多个 ab* –字母a后跟零个或多个b
+ 一个或多个 ab+ –字母a后跟一个或多个b
? 零或一 ab? –零或仅一个b
{n} 给定一个数字,精确找到该数字 ab{2} –字母a后面紧跟两个b
{n,} 给定一个数字,至少找到该数字 ab{2,} –字母a后面至少两个b
{n,y} 给定两个数字,找到该数字的范围 ab{1,3} –字母a,后跟一到三个b

查找字符类别

正则表达式训练的下一步是在模式匹配中使用字符类。 这里要注意的重要一点是,这些类可以组合为列表,例如[a,d,x,z] ,也可以组合为范围,例如[az] ,并且字符通常区分大小写。

要在vi中查看此工作,我们需要关闭我们之前设置的忽略情况。 让我们键入: set noic以再次忽略大小写。

用作范围的一些常见字符类别是:

  • az-所有小写字符
  • AZ-所有大写字符
  • 0-9 –数字

现在,让我们尝试类似于我们之前进行的搜索:


   
   
/tT

您注意到它什么也没发现吗? 这是因为以前的正则表达式正好查找“ tT”。 如果我们将其替换为:


   
   
/[tT]

我们将看到在整个文档中小写字母T和大写字母T都匹配。

Letter 't' highlighted

现在,让我们将几个班级范围链接在一起,看看我们得到了什么。 尝试:


   
   
/[A-Z1-3]

capital letters and 123 are highlighted

请注意,大写字母123和123突出显示,但小写字母(包括第五行的结尾)未突出显示。

标志

开始正则表达式训练的最后一步是了解存在的标志,以搜索特殊类型的字符,而无需在范围内列出它们。

  • . –任何字符
  • \s –空格
  • \w –字
  • \d –数字(数字)

例如,要查找示例文本中的所有数字,请使用:


   
   
/\d

请注意,在下面的示例中,所有数字都突出显示。

numbers are highlighted

为了反之,通常使用相同的标志,但要大写。 例如:

  • \S –不是空格
  • \W –一言不发
  • \D –不是数字

请注意,在下面的示例中,通过使用\D ,将突出显示除数字以外的所有字符。

all characters EXCEPT the numbers are highlighted

用sed搜索

关于sed的快速说明:它是流编辑器,这意味着您无需与用户界面进行交互。 它将流从一侧传入,并将其写出另一侧。

使用sed与vi非常相似,不同之处在于您为它提供了正则表达式以进行搜索和替换,并返回输出。 例如:


   
   
sed s/dog/cat/ examples

将以下内容返回到屏幕:

Searching and replacing

如果您要保存该文件,则只会有些棘手。 您需要将几个命令链接在一起,以便a)编写该文件,然后b)将其复制到第一个文件的顶部。

为此,请尝试:


   
   
sed s/dog/cat/ examples > temp.out; mv temp.out examples

现在,如果查看examples文件,您将看到单词“ dog”已被替换。


   
   
The quick brown fox jumped over the lazy cat.
Simple test
Harder test
Extreme test case
ABC 123 abc 567
The cat is lazy

想要查询更多的信息

我希望这对正则表达式有所帮助。 当然,这只是冰山一角,我希望您通过阅读下面的其他资源,继续学习这个强大的工具。

在哪里获得帮助

有关更多示例,请查看

翻译自: https://opensource.com/article/18/5/getting-started-regular-expressions

正则表达式入门书籍

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值