[[]]
在正则表达式中意味着什么?
$ echo '[][]' | grep -oE '[[]]'
[]
[]
$ grep --version
grep (GNU grep) 2.10
嗯,它似乎与[]
匹配。
(字符序列[]
,而不是[
或]
。)
(我用python的re模块测试了它,结果相同。)
真?
如果是这样,为什么?
我知道如果我想匹配[
或]
,我应该写[][]
或[[\]]
。
(它们在PCRE中工作,grep支持[][]
但不支持[[\]]
,因为\
在grep的括号表达式中失去了特殊含义。)
我只是感到好奇。
答案 0 :(得分:4)
表达式[[]]
实际上由两个连接的子表达式组成:[[]
和]
。
[[]
是仅匹配[
个字符的字符类。 [
只能在角色类的最开始才有可能。]
只是一个普通字符。两者都连接在一起,因此您的表达式匹配[
后跟]
的任何字符,从而匹配[]
。