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感谢您指出这一点。在某些语言中,[[]
是非法的。