Regex 什么是;[[]]”;用正则表达式是什么意思?

Regex 什么是;[[]]”;用正则表达式是什么意思?,regex,grep,pcre,Regex,Grep,Pcre,在正则表达式中,[[]]是什么意思 $ echo '[][]' | grep -oE '[[]]' [] [] $ grep --version grep (GNU grep) 2.10 嗯,它似乎与[]匹配。 (字符序列[],而不是[或]) (我已经用python的re模块对其进行了测试,结果相同。) 真正地 若然,原因为何 我知道如果我想匹配[或],我应该写[]]或[\]]。 (它们在PCRE中工作,grep支持[[]],但不支持[[\]],因为\在grep的括号表达式中失去了特殊意义。)

在正则表达式中,
[[]]
是什么意思

$ echo '[][]' | grep -oE '[[]]'
[]
[]
$ grep --version
grep (GNU grep) 2.10
嗯,它似乎与
[]
匹配。 (字符序列
[]
,而不是
[
]
) (我已经用python的re模块对其进行了测试,结果相同。) 真正地 若然,原因为何

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

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

  • [[]
    是仅匹配
    [
    字符的字符类。只有在字符类的最开始处才可能具有
    [
  • ]
    如果在字符类之外,则仅为普通字符

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

看起来我误读了您的问题。@BoltClock我编辑了一点我的问题。(指出
[]
是一个序列)我希望它现在看起来更清晰。)如果您想尝试更多类似的东西,请尝试JAVA中的
[[[]x
[[[]]
:)之类的表达式,
“foo[bar.matches”([[]]);
在索引3附近抛出一个
模式语法异常
:Unclosed character class,因为您需要转义内括号:
“[\\[\[\]]”
@sp00m感谢您指出这一点。在某些语言中,
[[]
是非法的。