Shell编程高级篇之正则表达式

本文深入解析基础及扩展正则表达式,涵盖各种符号如.[]*?{}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


正则表达式与之前学过的通配符很相似,但是功能有区别

通配符:find 模糊匹配(默认是精准匹配)
正则表达式:grep精准匹配(默认是模糊匹配)

基础正则表达式

在这里插入图片描述

. (英文的。)

表示匹配任意一个字符(字母、数字、符号等任意字符)

[]

[]表示匹配[]中任意一个字符,不过只能匹配一个字符
如:[abc]要么匹配a,要不匹配b,要么匹配c

*

表示*前的一个字符匹配0次任意次数

如:aa*只对前的一个字符生效,所以第一个a不生效,第二个才生效,可以匹配到a(匹配0次)aa(匹配1次)aaaaa(匹配4次)

如:a*可以匹配全文

如:a.* 匹配以a开始的后面可以是任意长度的任意字符

如:.*表示任意长度的任意字符,也可以匹配空白行

?

用转义符来使用?:\?
匹配\?前一个字符0次或一次
如:aa\? 可以匹配 a(匹配0次)aa(匹配1次)

{}

用转义符来使用:\{   \}
\{n\} 表示前面的字符恰好出现n次
\{n,\} 表示其前面的字符出现不小于n次
\{n,m\} 匹配其前面的字符出现不小于n次,最多出现m次

^与$

^表示匹配行首
[^] 中括号中的 ^表示取非
^ [^a-Z]表示匹配行首不是字母开头的其他字符

$表示匹配行尾

^$可以匹配空白行

()

用转义符来使用:\(  \)

()表示分组匹配
()中的字符串被当作一个整体,变成一个字符

扩展正则表达式

我们基础正则表达式是用grep来匹配

这里我们可以结合grep -Eegrep 来省略转义符来使用

用grep时,扩展正则需要用转义符	\{\} \? \(\)
用grep -E 或者 egrep 命令时:可以将扩展正则表达式的转义符去掉,直接使用符号{} ? ()

在这里插入图片描述

+

+表示匹配+前的一个字符1次或任意次数
如:aa+ 匹配到)aa(匹配1次)aaa(匹配2次)

|

|表示同时匹配|两侧的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值