Shell脚本查找与替换(二)

区间表达式 单个表达式匹配多字符

最简单的正则表达式ab匹配于ab, ..(两个点号)匹配于任意两个字符,但是在单个字符后面加上修饰符(modifier)meta之后,能够实现更强大的功能。
例如,ab*c 表示“匹配一个a,0或多个b,以及a c”,所以这个正则表达式匹配的有ac, abc, abbc, abbbbbc等,但类似于aQc, akc等是不匹配的。
*修饰符虽然好用,但是不能明确表达*要匹配几个字符,此时需要引进区间表达式。

区间表达式 是将一个或两个数字放在\{与\}之间,有以下三种情况:

\{n\}   %前置正则表达式所得结果重现n次
\{n,\}  %前置正则表达式所得结果至少重现n次
\{n,m\} %前置正则表达式所得结果重现n至m次

例:
(1)重现5个a a\{5\}
(2)重现10到42个qq\{10,42\}

文本匹配锚点
文本匹配锚点(anchor)主要指两个meta字符,一个是\^,另一个是$,关于他们的具体用法,用以下例子来展示:
假定匹配文本为abcABCdefDEF,正则表达式内锚点范例如下表:

模式是否匹配匹配文本及理由
ABC居中的第4,5,6个字符:abc**ABC**defDEF
^ABC限定匹配字符串的起始处
def居中的第7,8,9个字符:abcABC**def**DEF
def$限制匹配字符串的结尾处
[[:upper:]]{3}居中的第4,5,6个字符:abc**ABC**defDEF
[[:upper:]]{3}$结尾的第10,11,12个字符:abcABCdef**DEF**
^[[:alpha:a]]{3}起始的第1,2,3个字符:**abc**ABCdefDEF

\^和$也可以同时使用,这种情况是将括起来的正则表达式匹配整个字符串或行,例如,使用\^$ 删除扩展文件里的空行:

$ cc -E foo.c | grep -v '^$' >foo.out
运算符的优先级(从高到底排序)
运算符表示意义
[..][==][::]用于字符排序的方括号符号
\metacharacter转义的meta字符
[]方括号表达式
\(\) \digital子表达式与后项引用
* \{ \}前置单个字符重现的正则表达式
无符号连续
^ $锚点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值