网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

Linux入门之正则表达式

时间:2023-05-12 15:31

人气:

作者:admin

标签: 字符串  Linux 

导读:正则表达式是用来表达字符串匹配模式的方法,利用正则表达式,可以让我们轻易地实现对目标字符串的**查找**、**删除**、**替换**等操作。正则表达式并不复杂,它并不包含难以理解...

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

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

本文会先整理出所有的正则表达式以及其含义,接下来会利用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:环境变量设置方式及原理

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信