0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux入门之正则表达式

jf_78858299 来源:技术人江湖 作者:吕良 2023-05-12 15:31 次阅读

正则表达式是用来表达字符串匹配模式的方法,利用正则表达式,可以让我们轻易地实现对目标字符串的 查找删除替换等操作。

正则表达式并不复杂,它并不包含难以理解的理论,只是一些约定好的匹配规则,但由于规则较多,可能比较容易忘记。

本文会先整理出所有的正则表达式以及其含义,接下来会利用grep命令,详细介绍每种正则表达式的使用方式,并给出案例。

如果大家忘记了某个匹配规则的话,相信你只要再看一遍下方整理好的表格,就能回忆起其使用方法。

正则表达式规则

下方表格整理了常用正则表达式的匹配规则:

表达式 含义
^word 匹配关键字出现在行首的行下面命令查询以Hello开头的行grep ^Hello regular.txt
word** 匹配关键字出现在行尾的行下面命令查询以 complete 结尾的行grep complete**regular.txt
. 一定存在某个字符例如a.c可以匹配abc,acc,adc,aec等字符串
\\ 转义符,去掉特殊符号的特殊含义下面的命令查找含有单引号'的行grep \\' regular.txt
* 匹配0个或无穷多个前面的表达式下面命令查找es,ess,esss,esss...等字符串grep ess* regular.txt
[list] 匹配中括号中的一个字符例如,t[ae]st既能匹配test,也能匹配tast
[n1-n2] [list]的简写形式,匹配两个字符之间的所有连续字符例如,[A-Z]匹配所有的大写字符,[0-9]匹配0和9之间的任意一个数字
[^list]或[^n1-n2] 中括号中的^是取反的意思,它表示只要一行包含有非list中列出的任意字符,就会被匹配例如,下面命令查找包含有非大写字符的行grep [^A-Z] regular.txt
{n} 匹配n个前面的表达式
{n, m} 匹配连续n到m个前面的表达式
{n,} 匹配连续n个或以上个前面的表达式

下面将使用grep命令演示各个表达式的执行效果,测试使用的regular.txt文件内容如下图所示:

图片

^word

grep one regular.txt命令的执行结果如下所示:

图片

默认条件下,grep命令会把包含“one”的行都检索出来。但如果你只想检索以“one”开头的行,要使用如下命令:

grep ^one regular.txt

其执行结果如下图所示:

图片

可以看到只有以“one”开头的行被检索出来了,那种虽然包含“one”,但并不以“one”开头的行不会被检索到。

word$

$表示只查询以某个关键字结尾的行:

图片

默认条件下,grep命令会把包含“three”的行都检索出来。但使用$后,只有以“three”结尾的行会被检索到。

小数点 .

.表示一定匹配且仅匹配一个字符。在regular.txt文件中,包含下面几行:

taste
tst
tesst
test

但执行grep t.st regular.txt命令时,只有taste和test两行内容会被检索出来:

图片

这是因为.一定匹配一个任意字符,所以只有taste和test两行内容满足要求。

星号 *

*表示重复任意次前面的表达式,包括0次和无穷次。

grep go* regular.txt命令执行结果如下:

图片

ggogoogoo...等字符串都会被检索到。

[list]

匹配中括号中的任意一个字符,注意“[]”表达式只表示一个字符,中括号内的字符之间是“或”的关系。

grep t[ea] regular.txt命令执行结果如下:

图片

tst字符串就没有被检索到,因为s不在[ea]范围内。

[n1-n2]

这是对[list]的简写形式,在处理连续字符集时很有效。

例如,想要列出所有的小写字母,你可以用“[abcdefg...xyz]”来表达,但这样输入太多,比较麻烦。

由于小写字母是连续的,所以可以用[a-z]表示所有的小写字母。

grep t[a-z] regular.txt执行结果如下所示:

图片

同理,[A-Z]表示所有大写字母,[0-9]表示所有数字。

[^list] 或 [^n1-n2]

^出现在中括号内时,它表达“取反”的含义。

下面是[list]形式使用^符号的前后结果对比:

图片

下面是[n1-n2]形式使用'^'符号的前后结果对比:

图片

, ,

这三种表达式本质上是一类表达式,都是表示前面表达式重复的次数。

go\\{4\\}表示字母g后面必须跟着4个字母o:

图片

go\\{4,6\\}表示字母g后面跟着4个字母o到6个字母o的字符串都是匹配的:

图片

go\\{4,\\}表示字母g后面跟着4个字母o或超过4个字母o的字符串都是匹配的:

图片

这里要注意,grep在使用\\{n,m\\}表达式时,表达式内容必须用单引号'或双引号"扩起来。其它情况可以不使用双引号或单引号。

反斜杠 \\

\\是转义字符,当你要检索某些特殊字符时,就需要使用它。

例如,下面检索包含单引号的行:

图片

这里如果不使用\\,将无法正常执行命令:

图片

—————END—————

技术人江湖互联网技术分享,Elasticsearch系列教程

67篇原创内容

公众号

收录于合集 **#**linux

12

上一篇Linux必知必会10:环境变量设置方式及原理

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10991

    浏览量

    206736
  • 字符串
    +关注

    关注

    1

    文章

    551

    浏览量

    20126
  • 正则表达式
    +关注

    关注

    0

    文章

    25

    浏览量

    3433
收藏 人收藏

    评论

    相关推荐

    什么是正则表达式正则表达式如何工作?哪些语法规则适用正则表达式

    正则表达式又称规则表达式(Regular Expression,在代码中常简写为 regex、regexp 或 RE),是一种用于匹配、查找、替换文本的强大工具。它能够以特定的模式匹配字符串,从而
    的头像 发表于 11-03 14:41 566次阅读
    什么是<b class='flag-5'>正则表达式</b>?<b class='flag-5'>正则表达式</b>如何工作?哪些语法规则适用<b class='flag-5'>正则表达式</b>?

    shell正则表达式学习

    正则表达式在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多
    发表于 07-25 17:18

    正则表达式运用解析

    正则表达式的运用二
    发表于 09-11 08:59

    总结linux脚本语法和正则表达式的应用

    每日学一点linux脚本语法以及正则表达式基础
    发表于 11-08 09:23

    初识 Python 正则表达式

    正则表达式是一个特殊的字符序列,用于判断一个字符串是否与我们所设定的字符序列是否匹配,也就是说检查一个字符串是否与某种模式匹配。Python 自 1.5 版本起增加了re 模块,它提供 Perl
    发表于 03-17 16:44

    深入浅出boost正则表达式

    什么是正则表达式正则表达式是一种用来描述一定数量文本的模式。Regex代表Regular Express. 如果您不知道什么是正则表达式,请看这篇文章:深入浅出之正则表达式
    发表于 09-08 18:09 9次下载

    PHP正则表达式

    PHP正则表达式,PHP建设必备的的工具,初学者简单易懂快速入门,高手进阶手册。
    发表于 04-18 10:46 0次下载

    快速入门IPv6和正则表达式

    对于日常开发中只接触IPv4,并没有深入研究过正则表达式的开发者,面对IPv6和正则表达式,容易产生畏惧心理,觉得是两座难以翻越的大山。本文通过一些表格整理对IPv6的表示方法,以及正则表达式的特殊符号进行了分类和说明,带领大家
    的头像 发表于 03-30 09:31 8455次阅读
    快速<b class='flag-5'>入门</b>IPv6和<b class='flag-5'>正则表达式</b>

    Python正则表达式的学习指南

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化
    发表于 09-15 08:00 0次下载
    Python<b class='flag-5'>正则表达式</b>的学习指南

    Python正则表达式指南

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化
    发表于 03-26 09:13 10次下载
    Python<b class='flag-5'>正则表达式</b>指南

    C语言如何使用正则表达式

    C语言的正则表达式规则,特此跟大家分享。
    的头像 发表于 03-16 08:41 4287次阅读

    python正则表达式中的常用函数

    编译正则表达式模式,返回一个正则对象的模式。(可以把那些常用的正则表达式编译成正则表达式对象,这样可以提高一点效率。)
    的头像 发表于 03-18 16:12 1556次阅读

    shell脚本基础:正则表达式grep

    Linux上有许多命令可以使用正则表达式,其中最常见的是grep命令和sed命令。正则表达式有多种类型,每种类型中可以使用的元字符类型不同。最常见的是基本正则表达式和扩展
    的头像 发表于 05-29 09:29 773次阅读
    shell脚本基础:<b class='flag-5'>正则表达式</b>grep

    Python中的正则表达式

    哈喽大家好,我是了不起,今天给大家讲Python中的正则表达式 在Python中,正则表达式是一种强大的文本处理工具,它可以用来匹配、搜索、替换文本。正则表达式是一个特殊的字符序列,它可以描述一类
    的头像 发表于 06-21 16:52 709次阅读

    linux正则表达式匹配字符串

    Linux操作系统中,正则表达式是一种强大的模式匹配工具,它可以用于在文本中查找、替换和筛选特定的字符串。准确掌握正则表达式的语法和常见应用,对于Linux系统的管理员和开发人员来说
    的头像 发表于 11-23 10:26 331次阅读