正则表达式

本文详细介绍了正则表达式的基本概念、元字符、基本正则表达式(BRE)和扩展正则表达式(ERE)的用法,通过实例展示了如何在Unix/Linux环境中使用grep、sed等工具进行文本过滤和编辑。正则表达式是文本处理的强大工具,通过掌握元字符和语法,可以更高效地处理字符串和文本文件。
摘要由CSDN通过智能技术生成

一、 什么是正则表达式

1.1 正则表达式简介

​ 所谓正则表达式,实际上就是用来描述某些字符串匹配规则的工具,简单地说,正则表达式是对文本进行过滤的工具。而正则表达式之所以拥有过滤文本的功能,是因为它定义了一系列的元字符,通过元字符配合其他普通字符来表达出一种规则(匹配规则),只有符合该规则的文本才能保留下来。由于正则表达式语法简练、功能强大,得到了许多变成语言的支持,包括Java、C++、Perl以及Shell。

​ 比如ls .txt。通常情况下,我们称“*”为通配符。当shell遇到该符号时,会将其解释为“任意的字符串”。与通配符类似,正则表达式也是用来匹配文本的,与之相比,正则表达式能够更加准确的描述用户的需求。

​ 正则表达式在Unix和Linux中得到广泛的应用,常见支持正则表达式的Unix工具如下:

​ grep命令族:用于匹配文本行

​ sed流编辑器:用于编辑文本

​ awk:用于处理字符串的语言

​ 掌握正则表达式,可以更好地利用这些工具。

解释:

​ 字符 字母和数字

​ 字符串 word 词

​ 文本行 文件中的行

1.2 如何学习正则表达式

​ 1)重点在于理解元字符

​ 元字符在正则表达式中占核心地位,正则表达式最终是由元字符表达出来。理解和掌握元字符的涵义,才能达到灵活运用的地步。

​ 2)掌握好正则表达式的语法

​ 正则表达式之所以简练,是因为它有严格的语法。例如“*”它匹配该符号前面那一个普通字符出现0次或多次,也就是说,它的作用范围仅限于紧挨着该字符前面的一个字符。

二、基本正则表达式(Basic Regular Expression,BRE)

​ 又称标准的正则表达式,是最早指定的正则表达式规范,其所定义的元字符主要有以下几种:

1、 行首定位符 “^”

2、 行尾定位符 “$”

3、 单个字符匹配 “.”

​ 匹配任意单个字符,包括空格,但不包括换行符“\n”

4、 限定符 “*”

​ 匹配其前导字符可以出现任意次数(0次或多次)

5、 字符集合匹配 “[]”

​ 匹配方括号中任意一个字符 //例如:[abc]、[0-9]、[A-Z]

6、 字符集合不匹配 “[^]”

​ 不匹配其中列出的任意字符

在示例之前,先来用sed删除空行:

​ [root@mha_master opt]# sed -i “/^$/d” regexp.txt

示例1:过滤出以字母“a”开头的行

​ [root@mha_master opt]# grep “^a” regexp.txt

示例2:过滤出以“C”结尾的行

​ [root@mha_master opt]# grep “C$” regexp.txt

示例3:过滤出总共有3个字符,该字符串以’a’开头,紧跟着第二个字符是“b”,第三个字符也是最后一个字符为“c”的行

​ [root@mha_master opt]# grep ‘^abc$’ regexp.txt

示例4:匹配以a开头,c结尾,中间为除了换行符之外的任意一个字符的行

​ [root@mha_master opt]# grep ‘^a.c$’ regexp.txt

示例5:匹配以d开头,d结尾,中间为除了换行符之外的任意两个字符的行

​ [root@mha_master opt]# grep ‘^d…d$’ regexp.txt //可以使用多个“.”匹配多个字符

示例6:匹配a和b之间没有s或者有多个s的行

​ [root@mha_master opt]# grep ‘^as*b$’ regexp.txt

示例7:匹配出字符串,该字符串只有三个字符且以字母

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值