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

如何在vim脚本的matchstr函数中使用正则表达式进行匹配?,vim,Vim,我试图理解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使用正则表达

我试图理解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使用正则表达式方言,默认情况下,如果需要特殊字母的正则表达式功能,则需要对其进行转义。例如,对于或您需要编写
\\\\\
,而不像perl正则表达式
\
,这适用于多原子
+
和或原子
。(这可以通过regex atom
\v
来改变,它提供了更像perl的regex方言,请参见
:h/\v


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

中进行了解释,Vim使用正则表达式方言,默认情况下,如果需要特殊字母的正则表达式功能,则需要对其进行转义。例如,对于或您需要编写
\\\\\
,而不像perl正则表达式
\
,这适用于多原子
+
和或原子
。(这可以通过regex atom
\v
来改变,它提供了更像perl的regex方言,请参见
:h/\v

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