括号内的管道在正则表达式中意味着什么?

时间:2017-11-14 20:45:42

标签: regex vim

阅读此vim plugin我看到这一行:

syntax match tweeDelimiter "[<<|>>|\]\]|\[\[]"

对我来说,当它被[]包围时,正则表达式没有多大意义。根据{{​​3}},“POSIX括号表达式匹配一组字符中的一个字符”。

所以这不匹配&lt;或者&gt;还是[或]?我从上下文中知道它正在尝试匹配&lt;&lt;或&gt;&gt;或[[或]]。

1 个答案:

答案 0 :(得分:1)

这确实看起来像是插件中的一个错误。如果要匹配这些字符的,则必须使用普通的 regexp分支\|),而不是集合

<<\|>>\|\]\]\|\[\[

如果还有其他匹配的内容,则必须在\%(...\)中包含以上内容才能对其进行分组。但是,使用[...]将匹配所包含字符的任何; Vim只是忽略了重复的那些。正如其他人已经评论过的那样,可以用更短的形式写出来,例如[][<>|]

因此,如果该插件确实错误地匹配了<><[之类的内容,而不仅仅是<<[[,请告知其作者有关该错误。