正则表达式中“[[]]”是什么意思?

时间:2012-09-14 07:42:41

标签: regex grep pcre

[[]]在正则表达式中意味着什么?

$ echo '[][]' | grep -oE '[[]]'
[]
[]
$ grep --version
grep (GNU grep) 2.10

嗯,它似乎与[]匹配。 (字符序列[],而不是[]。) (我用python的re模块测试了它,结果相同。) 真? 如果是这样,为什么?

我知道如果我想匹配[],我应该写[][][[\]]。 (它们在PCRE中工作,grep支持[][]但不支持[[\]],因为\在grep的括号表达式中失去了特殊含义。) 我只是感到好奇。

1 个答案:

答案 0 :(得分:4)

表达式[[]]实际上由两个连接的子表达式组成:[[]]

  • [[]是仅匹配[个字符的字符类。 [只能在角色类的最开始才有可能。
  • 如果在字符类之外,
  • ]只是一个普通字符。

两者都连接在一起,因此您的表达式匹配[后跟]的任何字符,从而匹配[]