为什么这个grep命令会抛出错误?

时间:2013-01-24 22:53:57

标签: regex grep

如果我使用此命令,它可以正常工作:

grep -o -e "{{ *[-_[:alnum:]]\+"

但是,如果我使用这个,它会抛出错误

grep -o -e "{{ *[_-[:alnum:]]\+"

与此相同:

grep -o -e "{{ *[[:alnum:]-_]\+"

另一个:

grep -o -e "{{ *[[:alnum:]-\_]\+"

似乎RegExp中的[]无法启动也不能以_

结束

为什么?

错误是:

  

grep:无效的范围结束

1 个答案:

答案 0 :(得分:4)

错误与宣传-有关:0-9表示0123456789。但_-[:alnum:]的含义是什么?将-作为第一个字符会禁用此特殊含义,因此第一个正则表达式按预期工作。