红联Linux门户
Linux帮助

关于正则表达式的一个问题

发布时间:2012-06-18 11:13:11来源:红联作者:wuqi1003
最近买了两本书,一本是印度阿三写的《Linux脚本攻略》,另一本是华清远见出的《linux shell编程从初学到精通》,在正则表达式的一个语法上面,两本书有不同之处。
如果想匹配前面的字符出现n次、至少n次、n~m次,

阿三的书上写的是
{n}、{n,}、{n,m}
而华清远见的书上写的是:
\{n\}、\{n,\}、\{n,m\}

我上网查了一下,发现网友们都采用的是印度阿三的方法,那么华清远见的书上是错误的吗?还是说两者都是正确的?求详解!!
文章评论

共有 5 条评论

  1. shiyun 于 2012-12-03 12:49:16发表:

    {n}、{n,}、{n,m} 是扩展的正则表达式 ERE
    \{n\}、\{n,\}、\{n,m\} 是基本正则表达式 BRE
    两者语法稍有不同,grep默认使用BRE,加-E选项则使用ERE
    一本书上写的各工具对正则表达式的支持:
    类型 grep sed ed ex/vi more egrep awk lex
    BRE * * * * *
    ERE * * *

  2. 相思爱文 于 2012-06-20 10:57:07发表:

    自己实践下,就知道了。
    所有的脚本和程序,都需要测试。

    有些情况下,加和不加\转义符,会得出相同结果。有些情况下,必须要加转义符或用引号括住。

  3. personball 于 2012-06-18 13:36:54发表:

    稍微提示下吧
    命令行,也就是shell,比如BASH,需要接受命令,那基本上命令都是一串字符串。。
    而这串字符串中可能又使用了其他的unix 工具程序,比如grep,cut,awk,sed之类的,其实都不算shell自身的东西,但是shell可以调用。。。那么传给bash的那串字符串当中,若是包含了一些特殊字符,其实不是给bash看的,是给工具程序看的,那么就要进行转义,或者其他处理。

  4. personball 于 2012-06-18 13:33:57发表:

    只是某些地方需要斜杠进行转义,具体情况,参考ABS

  5. Dsucov 于 2012-06-18 11:48:52发表:

    我不懂这个问题,不过现在的书错误的地方远不止一个,有些概念举例也没有抓住要害