4

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

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

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

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

4

1 回答 1

4

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

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

两者都是连接的,因此您的表达式匹配[后面的任何字符],这会导致匹配[]

于 2012-09-14T07:52:36.670 回答