文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>正则表达式: \s 要慎用

正则表达式: \s 要慎用

时间:2010-02-24  来源:myst

匹配空白(space与tab)的标准写法是 [ \t],当然也有其它的写法,[ \t]算是最简单、最流行的写法了,还一种很不可靠的写法\s ,虽然它在很多时候也能匹配space与tab,与[ \t]的功能似乎相同,而且形式更为简略,但是这个\s一定要慎用,能不用就不用,因为有大大的bug,举例说明 :

文本文件data_file的数据如下:
/bin/basename           /bin/cat                /bin/chgrp
/bin/chmod              /bin/chown              /bin/cp
/bin/cut                /bin/date               /bin/dd
/bin/df                 /bin/echo               /bin/env
/bin/expr               /bin/false              /bin/id
/usr/bin/csplit         /usr/bin/cut            /usr/bin/dir
/usr/bin/dircolors      /usr/bin/dirname        /usr/bin/du
/usr/bin/env            /usr/bin/expand         /usr/bin/expr
/usr/sbin/chroot

现在要把目录名去掉,只留下后面的可执行文件名称:
# sed -r 's/[^ \t]+bin\///g' data_file  这样是可行的
# sed -r 's/[^\s]+bin\///g' data_file   这样不可行 !

sed版本是4.2,曾经很疑惑为什么\s如此简单的写法却经常被排除在主流用法之外,原来如此。

通过上面的那个例子,我还发现了sed-4.2 正则的其它的bug,当tab符号单独使用的时候,方括号里加上^排除法,即[^\t] ,也会出现错误,但本人很忙,没空去报告。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载