免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1242 | 回复: 4
打印 上一主题 下一主题

[系统管理] 正则表达式解惑 [复制链接]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-01-20 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-01-17 23:58 |只看该作者 |倒序浏览
今天看到一个正则表达式的用法,有些疑惑不解,请大神帮忙解释,多谢。

#echo "i cannot do it" |grep "can[ no' ]*t"

#i cannot do it

个人理解:

gerp后面的正则表达式 can必须存在,再后面 [ no' ] 中括号前后各一个空格,在中括号中的所有字符串,都只匹配其中一个,可能是 空格 或 n 或 o 中的一个,后面的星号 * 表示匹配前面字符0个或多个。

所以 基于以上分析,我觉得不会匹配 “i cannot do it”这个行,但结果却是匹配的,请大神帮忙解惑,多谢

论坛徽章:
0
2 [报告]
发表于 2016-01-18 09:15 |只看该作者
本帖最后由 xaverlin 于 2016-01-18 09:17 编辑

[root@lin tmp]# echo "i can not do it" | grep "can[ no' ]*t"
i can not do it
[root@lin tmp]# echo "i can do it" | grep "can[ no' ]*t"
[root@lin tmp]# echo "i can t do it" | grep "can[ no' ]*t"
i can t do it
[root@lin tmp]# echo "i can nt do it" | grep "can[ no' ]*t"
i can nt do it
[root@lin tmp]# echo "i can ot do it" | grep "can[ no' ]*t"
i can ot do it
[root@lin tmp]# echo "i can u t do it" | grep "can[ no' ]*t"
[root@lin tmp]#

只要can 和 t之间是空格,或者n或者o,都能匹配

论坛徽章:
39
双子座
日期:2014-08-06 17:37:19极客徽章
日期:2016-12-07 14:03:402017金鸡报晓
日期:2017-01-10 15:13:292017金鸡报晓
日期:2017-02-08 10:39:4215-16赛季CBA联赛之新疆
日期:2017-03-24 16:36:1915-16赛季CBA联赛之江苏
日期:2017-04-26 17:19:08黑曼巴
日期:2018-03-07 18:56:5615-16赛季CBA联赛之八一
日期:2018-03-09 10:44:1015-16赛季CBA联赛之江苏
日期:2018-03-12 15:12:1915-16赛季CBA联赛之青岛
日期:2018-03-16 09:13:0515-16赛季CBA联赛之山东
日期:2018-04-27 18:23:0515-16赛季CBA联赛之新疆
日期:2018-05-04 11:29:30
3 [报告]
发表于 2016-01-18 09:31 |只看该作者
本帖最后由 o枫叶o飘零 于 2016-01-18 09:32 编辑

回复 1# bobower


    后面的星号 * 表示匹配前面字符0个或多个。

    纠正一下你就明白     这里的*表示匹配前一个子表达式的0次或多次

     也就等价于{0, }

     [ no' ]   再来看这个子表达式,你也说了   表示里面其中的任意一个字符   空格 或n 或o 或单引号    后面接着*   也就是说前面的情况会出现0次 或多次

评分

参与人数 1信誉积分 +5 收起 理由
cjfeii + 5

查看全部评分

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-01-20 06:20:00
4 [报告]
发表于 2016-05-12 19:10 |只看该作者
回复 3# o枫叶o飘零


    明白了,这个*把前面的正则表达示都当成一个字符来处理,只是不是具体的一个字符,之前一直没明白过来。
多谢~

论坛徽章:
72
20周年集字徽章-20	
日期:2020-10-28 14:04:30操作系统版块每日发帖之星
日期:2016-07-13 06:20:0015-16赛季CBA联赛之广夏
日期:2016-07-10 09:04:02数据库技术版块每日发帖之星
日期:2016-07-09 06:20:00操作系统版块每日发帖之星
日期:2016-07-09 06:20:00数据库技术版块每日发帖之星
日期:2016-07-07 06:20:00操作系统版块每日发帖之星
日期:2016-07-07 06:20:00操作系统版块每日发帖之星
日期:2016-07-04 06:20:00数据库技术版块每日发帖之星
日期:2016-07-03 06:20:00操作系统版块每日发帖之星
日期:2016-07-03 06:20:00数据库技术版块每日发帖之星
日期:2016-07-02 06:20:00操作系统版块每日发帖之星
日期:2016-07-02 06:20:00
5 [报告]
发表于 2016-05-13 11:35 |只看该作者
很赞~~

回复 3# o枫叶o飘零


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP