首页 > 运维 > linux运维 > 正文

学编程,怎么能不懂正则表达式!

雪夜
发布: 2025-07-21 11:04:30
原创
703人浏览过

在数学领域,表达式由数字、运算符、括号和变量构成。通过变量的使用,我们能够对数值信息进行批量计算,从而高效地完成各种计算任务。同样地,在处理文本信息时,我们也需要借助表达式和特殊符号,这些特殊符号在文本处理中扮演着变量的角色。这种表达式被称为正则表达式。正则表达式在多个计算机语言中都有广泛应用,本文将重点介绍在bash中使用正则表达式的方法。

正则表达式,也被称为规则表达式(Regular Expression, RE),利用特定字符的排列来查找、替换、删除符合特定模式(规则)的文本,是文本文件字符串处理的标准依据(需注意与通配符区分,通配符主要用于文件管理)。许多工具命令和软件都支持正则表达式,例如vim、grep、sed和awk等。此外,许多编程语言也支持使用正则表达式进行字符串操作,例如Perl语言内置了一个强大的正则表达式引擎。因此,正则表达式在处理文本数据时具有重要作用。

接下来,我们将逐步学习使用grep来掌握常用正则表达式的用法(一般使用LANG=C)。可以使用以下命令获取练习数据:

wget http://linux.vbird.org/linux_basic/0330regularex/regular_express.txt
sed -i 's/^M//' regular_express.txt
#注意,上面命令中的^M输入方法为先Ctrl+V后Ctrl+M
登录后复制

该文件内容如下所示:

"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
However, this dress is about $ 3183 dollars.
GNU is free air not free beer.
Her hair is very beauty.
I can't finish the test.
Oh! The soup taste good.
motorcycle is cheap than car.
This window is clear.
the symbol '*' is represented as start.
Oh!  My god!
The gd software is a library for drafting programs.
You are the best is mean you are the no. 1.
The world <happy> is the same with "glad".
I like dog.
google is the best tools for search keyword.
goooooogle yes!
go! go! Let's go.
# I am VBird</happy>
登录后复制

⑴集合字符[]

在高级搜索中,常用中括号[]来集合字符。例如,如果想同时搜索test和taste这两个关键词,可以使用t[ae]st:

学编程,怎么能不懂正则表达式!

搜索含有oo但前面不是g(即去除goo)的行:

学编程,怎么能不懂正则表达式!

搜索含有oo但前面不是小写字母的行:

学编程,怎么能不懂正则表达式!

在正则表达式中,所有连续的字符组均可以这样表达,例如[a-z]、[A-Z]、[0-9]。如果不在C语系中,可以使用[:lower:]、[:upper:]、[:digit:]分别代表小写字母、大写字母、数字:

学编程,怎么能不懂正则表达式!

⑵行首行尾字符^$

字符^可以限定行首,而$可以限定行尾。例如,要筛选行首为the的行(忽略大小写):

学编程,怎么能不懂正则表达式!

筛选行首不是字母的行:

学编程,怎么能不懂正则表达式!

需要注意的是,上述两个^的含义是不同的。筛选行尾是r.的行:

学编程,怎么能不懂正则表达式!

豆包AI编程
豆包AI编程

豆包推出的AI编程助手

豆包AI编程 483
查看详情 豆包AI编程

因为正则表达式中“.”具有特殊意义,所以需要“\”来转义。为了节省屏幕空间,去除空白行和行首为#的注释行:

学编程,怎么能不懂正则表达式!

⑶任意字符.与重复字符*

与通配符不同,在正则表达式中.代表一个任意字符,而*代表重复前一个字符0到无穷多次。例如,我们想查找含有g??d的行:

学编程,怎么能不懂正则表达式!

筛选至少含有两个o的行:

学编程,怎么能不懂正则表达式!

利用重复字符可以表示任意字符“.*”,例如筛选g开头与g结尾的字符串,中间字符可有可无:

学编程,怎么能不懂正则表达式!

筛选含有任意数字的行:

学编程,怎么能不懂正则表达式!

⑷限定连续字符范围{}

在正则表达式中{}可以用来界定连续字符的范围,但是由于在shell中{}具有特殊意义(数组引用),因此需要“\”来进行转义。例如,筛选含有2个o的字符串:

学编程,怎么能不懂正则表达式!

查找g后面接2-6个o,然后再接一个g的字符串:

学编程,怎么能不懂正则表达式!

掌握正则表达式的使用后,我们就可以进一步学习sed、awk等文本处理工具了。

以上就是学编程,怎么能不懂正则表达式!的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号