如何在vim脚本的matchstr函数中使用正则表达式进行匹配?
我试图理解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脚本的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使用正则表达式方言,默认情况下,如果需要特殊字母的正则表达式功能,则需要对其进行转义。例如,对于或您需要编写
\\\\\
,而不像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