如何在vim脚本的matchstr函数中使用正则表达式进行匹配?

时间:2016-01-19 17:47:49

标签: vim

我试图了解VIM如何使用'模式'争论' matchstr'功能

我尝试创建一个匹配' a'或者' b'但是我无法做到这一点。

以下是我的尝试:

:echo matchstr(" ab"," a | b")

:echo matchstr(" ab"," a \ | b")

:echo matchstr(" ab","(a | b)")

:echo matchstr(" ab","(a | b)") :echo matchstr(" ab","(a \ | b)")

注意:设置魔法?'显示魔术'

1 个答案:

答案 0 :(得分:5)

Vim使用正则表达式方言,默认情况下,如果需要正则表达式,则需要转义特殊字母。例如。对于OR,您需要编写\|而不是像perl正则表达式|这样适用于到多原子+和OR原子|。 (这可以通过正则表达式原子\v来改变,它提供了更像perge的正则表达方式,参见:h /\v

现在,您在表达式中使用双引号。当使用双引号时,Vim将解析特殊字符,因此在正则表达式引擎甚至看到它们之前删除一个反斜杠。因此,您需要加倍反斜杠或使用单引号。这在:h quote-expr

解释