Bashquеstion(RegExp)

时间:2012-08-21 12:18:58

标签: regex bash

为什么不使用第一和第二个变体,但第三个工作

    #!/bin/sh
    #---------------------------------------------

    text="my:?text=this:one"
    if (echo $text | grep '^my\:\?text=this\:one') then
        echo "1"
    elif (echo $text | grep '^my:\?text=this:one') then
        echo "2"
    elif (echo $text | grep 'text=this:one') then
        echo "3"
    fi

4 个答案:

答案 0 :(得分:7)

默认情况下,grep不使用正则表达式,添加-E标志以启用扩展正则表达式。

编辑:默认情况下,grep不使用扩展正则表达式,grep -E通常为egrep添加别名以便更快地使用

答案 1 :(得分:3)

使用Egrep扩展grep功能:

echo $text | egrep '^my\:\?text=this\:one'

答案 2 :(得分:1)

因为:不是正则表达式中的特殊符号而且不需要转义。

答案 3 :(得分:1)

删除问号前的反斜杠。它不被grep视为特殊字符。相反,添加反斜杠会增加其特殊含义。