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