我试图了解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)")
注意:设置魔法?'显示魔术'
答案 0 :(得分:5)
Vim使用正则表达式方言,默认情况下,如果需要正则表达式,则需要转义特殊字母。例如。对于OR,您需要编写\|
而不是像perl正则表达式|
这样适用于到多原子+
和OR原子|
。 (这可以通过正则表达式原子\v
来改变,它提供了更像perge的正则表达方式,参见:h /\v
)
现在,您在表达式中使用双引号。当使用双引号时,Vim将解析特殊字符,因此在正则表达式引擎甚至看到它们之前删除一个反斜杠。因此,您需要加倍反斜杠或使用单引号。这在:h quote-expr