正则表达式扩展应用

使用扩展正则表达式 egrep

首先来看一条前面章节学习过的用来去除空白行和注释行的指令:

bash 复制代码
grep -v '^$' regular_express.txt |grep -v '^#'

可见,通常的 grep 指令需要使用两次管线命令。那么如果使用扩展正则表达式,则可以简化为:

bash 复制代码
egrep -v '^$|^#' regular_express.txt

利用支持扩展正则表达式的 egrep 与特殊字符 | 的组合功能来间隔两组字符串,如此一来,可以极大地化简指令。

此外,也可以使用 grep -E 来使用扩展正则表达式,不过一般更建议直接使用 egrepgrep -Eegrep 之间类似命令别名的关系。

扩展规则(一)

回忆一下,在非扩展正则表达式中,我们使用 * 来表示任意个重复字符(零至无穷多个):

bash 复制代码
grep -n 'goo*d' regular_express.txt

在扩展正则表达式中,则可以进一步细分为一个或一个以上零个或一个字符:

+ 表示重复一个或一个以上的前一个字符
bash 复制代码
egrep -n 'go+d' regular_express.txt
? 表示重复零个或一个的前一个字符
bash 复制代码
egrep -n 'go?d' regular_express.txt

执行上述三条指令,比较三者的不同。

扩展规则(二)

| 表示用或(or)的方式找出数个字符串

查找 gd 或 good:

bash 复制代码
egrep -n 'gd|good' regular_express.txt
() 表示找出组字符串

查找 glad 或 good,注意到由于二者存在重复字母,所以可以将其合并:

bash 复制代码
egrep -n 'g(la|oo)d' regular_express.txt
()+ 多个重复群组判别

查找开头是 A 结尾是 C 中间有一个以上的 xyzxz 字符串:

bash 复制代码
echo 'AxyzxyzxyzxyzC'|egrep 'A(xyz)+C'
​
echo 'AxyzxyzxyzxyzC'|egrep 'A(xz)+C'

结果显示 A(xyz)+C 可以匹配,A(xz)+C 没有匹配项。

至此,关于正则表达式的基本知识就介绍完了,希望同学们多加练习,最终能够熟练地运用所学的关于正则表达式的知识,达到简化字符串处理的目的。

相关推荐
Yana.nice7 小时前
Linux 只保留 30 天内日志(find命令删除日志文件)
linux·运维·chrome
DFT计算杂谈10 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
Zhang~Ling11 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
DeeplyMind11 小时前
Linux 深入 per-VMA lock:Linux 缺页路径如何摆脱 mmap_lock
linux·per-vma lock
爱写代码的森12 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
XMAIPC_Robot13 小时前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发
重生的黑客13 小时前
Linux 进程优先级、切换与调度:从孤儿进程到 O(1) 调度模型
linux·运维·服务器·进程优先级·nice
骑上单车去旅行14 小时前
MD5校验对比脚本
linux·服务器·windows
平生幻15 小时前
Linux 常用命令
linux
ShirleyWang01216 小时前
让headlamp控制台能访问
linux·服务器·python·k8s·k3s