红联Linux门户
Linux帮助

正则表达式疑问

发布时间:2011-05-04 16:27:51来源:红联作者:ICEEN
$echo baeaebaet |sed -n '/b[ae]+t/p' 无输出
$echo baeaebaet |sed -n '/b[ae]?t/p' 无输出
$echo baeaebaet |sed -n '/b[ae]*t/p' 匹配输出
$echo beet |sed -n '/b[ae]{1,2}t/p' 无输出

+不是表示1-N 个前字符吗? 为什么不输出
?不是表示0-1 个前字符吗? 为什么不输出
文章评论

共有 6 条评论

  1. china19901107 于 2011-05-26 22:40:56发表:

    呵呵,正则表达式,刚刚起步

  2. yanyongkg 于 2011-05-14 21:37:32发表:

    [i=s] 本帖最后由 yanyongkg 于 2011-5-14 21:50 编辑 [/i]

    引用:
    $echo baeaebaet |sed -nr '/b[ae]?t/p' 为什么这个也是无输出????
    变换之风1986 发表于 2011-5-14 21:12


    [ae]? 是把a或e重复0-1次,b[ae]?t表示的只有bt bat bet三t个符合
    再举一例如下:
    b[ae]{2}t 符合的有baat beet baet beat

    换成(ae)?,就可以了输出了,b(ae)?t表示的有bt baet

  3. 变换之风1986 于 2011-05-14 21:12:30发表:

    $echo baeaebaet |sed -nr '/b[ae]?t/p' 为什么这个也是无输出????

  4. ICEEN 于 2011-05-05 10:26:27发表:

    原来如此,谢谢各位

  5. 相思爱文 于 2011-05-04 21:14:08发表:

    加参数
    -r, --regexp-extended 在脚本中使用扩展正则表达式
    否则只能是基础正则表达式

  6. yanyongkg 于 2011-05-04 17:05:21发表:

    $echo baeaebaet |sed -nr '/b[ae]+t/p' 输出
    $echo baeaebaet |sed -nr '/b[ae]?t/p' 无输出
    $echo baeaebaet |sed -n '/b[ae]*t/p' 输出
    $echo beet |sed -nr '/b[ae]{1,2}t/p' 输出