Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在正则表达式中,括号之间的管道是什么意思?_Regex_Vim - Fatal编程技术网

Regex 在正则表达式中,括号之间的管道是什么意思?

Regex 在正则表达式中,括号之间的管道是什么意思?,regex,vim,Regex,Vim,读到这里,我看到这一行: syntax match tweeDelimiter "[<<|>>|\]\]|\[\[]" 语法匹配限定符“[\\]\]\[\[\[]” 对我来说,当正则表达式被[]包围时,它没有多大意义。根据“POSIX括号表达式匹配一组字符中的一个字符” 因此,这不是匹配的或[或]?我从上下文中知道它正在尝试匹配>或[[或]。这看起来确实像插件中的一个bug。如果它想匹配这些字符对,它必须使用普通的regexp分支(\\\\\),而不是集合: \\\\

读到这里,我看到这一行:

syntax match tweeDelimiter "[<<|>>|\]\]|\[\[]"
语法匹配限定符“[\\]\]\[\[\[]”
对我来说,当正则表达式被
[]
包围时,它没有多大意义。根据“POSIX括号表达式匹配一组字符中的一个字符”


因此,这不是匹配的<或>或[或]?我从上下文中知道它正在尝试匹配>或[[或]。

这看起来确实像插件中的一个bug。如果它想匹配这些字符对,它必须使用普通的regexp分支(
\\\\\
),而不是集合:

\\\\]\]\|\[\[
如果有其他内容需要匹配,则必须将上述内容包含在
\%(…\)
中以对其进行分组。但是,使用
[…]
将匹配所包含的任何字符;Vim只会忽略重复的字符。正如其他人已经评论过的那样,可以用更短的格式编写,例如
[…]



因此,如果插件确实错误地匹配了
之类的内容,那么正则表达式就没有多大意义了。简而言之,您可以使用
[[\124;]
[\][\124;]
(在接受空集(如JavaScript)的语言中)来产生相同的结果。这基本上与字符
[]
。我相信它的意图是一个这种形状的正则表达式:
(\124;\]\]\[\[)
匹配
]
[
Imo这相当于
[\[\]]
我不确定这个插件是如何特别利用正则表达式的,但在PCRE中,两个开始/结束括号都可能表示一个分隔符,在这个上下文中也有意义。@revo在这个上下文中,我认为没有意义。这种语言没有[如果我们谈论的是分隔符,它不应该真正支持这种语法:也可以使用括号样式的分隔符,其中开始括号和结束括号分别是起始分隔符和结束分隔符。(,{},[]和都是有效的括号样式分隔符对。
<<\|>>\|\]\]\|\[\[