Linux学习笔记——正则表达式(shell元字符)

在正则表达式中,我们把用于匹配的特殊符号又称作元字符。在 Shell 中,元字符又分为基础元字符和扩展元字符。

基础元字符

元字符作 用
*前一个字符匹配 0 次或任意多次
.匹配除换行符外的任意一个字符
^匹配行首。例如,^hello 会匹配以 hello 开头的行
&匹配行尾。例如,hello& 会匹配以 hello 结尾的行
[]匹配屮柄号屮指定的任意一个字符,而且只匹配一个字符。例如.[aoeiu]匹配任意一个元音字母, [0-9] 匹配任意一位数字,[a-z][0-9] 匹配由小写字母和一位数字构成的两位字符
[^]匹配除中括号中的字符以外的任意一个字符。例如,[^0-9] 匹配任意一位非数字字符,[^a-z] 匹配任意一位非小写字母
\转义符,用于取消特殊符号的含义
\{n\}表示其前面的字符恰好出现 n 次。例如,[0-9]{4} 匹配4位数字,[1][3-8][0-9]\{9\} 匹配手机号码
\{n,m\}表示其前面的字符至少出现 n 次,最多出现 m 次。例如,[a-z]\{6,8\} 匹配 6〜8 位的小写字母

扩展正则表达式

扩展元字符作 用
+前一个字符匹配 1 次或任意多次。如“go+gle”会匹配“gogle” “google”或“gooogle”。当然,如果“o”有更多个,则也能匹配
?前一个字符匹配 0 次或 1 次。如 “colou?r” 可以匹配 “colour” 或 “color”
|匹配两个或多个分支选择。如“was|his”既会匹配包含“was”的行,也会匹配包含“his”的行
()匹配其整体为一个字符,即模式单元。可以理解为由多个单个字符组成的大字符。如“(dog)+”会匹配“dog” “dogdog” “dogdogdog”等,因为被()包含的字符会被当成一个整体。但 “hello(world

例1:"*"前一个字符匹配0次或任意多次
在这里插入图片描述

注:"*“和通配符中的”*"含义不同,它代表前一个字符重复 0 次或任意多次。比如,"is*"并不是匹配"is"后面的任意字符,而是可以匹配所有内容,包括空白行

例2:"."匹配除换行符外的任意一个字符
在这里插入图片描述

注:"."只能匹配一个字符,这个字符可以是任意字符

例3:"^“匹配行首,”$“匹配行尾
在这里插入图片描述
在这里插入图片描述
例4:”[]"匹配中括号中指定的任意一个字符,且只匹配一个字符
在这里插入图片描述

注:"[]"会匹配中括号中指定的任意一个字符,注意只能匹配一个字符。比如 [ao] 要么匹配 a 字符,要么匹配一个 o 字符

例5:"[^]"匹配除中括号的字符以外的任意一个字符
在这里插入图片描述

注:如果"^“在 [] 外,则代表的是行首;如果在 [] 内,则代表的是取反。比如” ^ [a-z]"会匹配以小写字母开头的行,而 " ^ [A-z] "会匹配不以小写字母开头的行,这里^ [^a-z] 会匹配不以小写字母开头的行。
例6:"“转义符
在这里插入图片描述
第一个是没有加”"转义符的,可见已经匹配错误,第二个是加了。

注:转义符会取消特殊符号的含义。如果想要匹配使用".“结尾的行,那么正则表达式是”.$“是不行的,因为”.“在正则表达式中有特殊含义,代表任意一个字符。所以需要在前面加入转义符,如”\.\$"。

例7:"{n}“表示其前面的字符恰好出现 n 次
在这里插入图片描述
例8:”{n,}“表示其前面的字符出现不少于 n 次
在这里插入图片描述
例9:”{n,m}"表示其前面的字符至少出现n次,最多出现m次
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kinghiee

爸爸们求打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值