sed中的正则表达式

http://topic.csdn.net/u/20100114/18/f6a22d18-7aa1-439b-a0b7-11cbd41d76e9.html

csdn CSDN社区-Linux/Unix社区-系统维护与使用区

 

测试文件 yutest 里面有一行两组数字 “12 34”
下面是命令和测试的结果
sed 's//([0-9]./)/aa/1/' yutest 
aa12 34
sed 's//([0-9]/)/([0-9]/)//2/1/' yutest 
21 34
sed 's//([0-9]./)/([0-9]./)//2 /1/' yutest 
134 2 
sed 's//([0-9]./)/([0-9]./)//1aa/1/' yutest
12 aa2 

从以上分析看出在匹配模式是/([0-9]./)/([0-9]./)/的时候 /([0-9]./)匹配后的结果是
“2 ”

解答:

在匹配模式是/([0-9]./)/([0-9]./)/的时候,第一个/([0-9]./)匹配到的是“2空格”,第二个匹配到的是“34”。原文中的“1是匹配不到的”,所以最后两个会输出那样的结果。

过程如下:要匹配([0-9]./)/([0-9]./),需要匹配四个字符。第一个字符在"[0-9]"范围内,第二个字符任意,第三个字符也是在"[0-9]"范围内,第四个字符任意。
所以开始匹配“12空格3”的第三个字符(空格)不符合"[0-9]"范围内。
于是匹配“2空格34”全部符合,所以:第一个([0-9]./)匹配到的就是“2空格”,第二个([0-9]./)匹配到的就是“34”了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值