vimscript匹配组合\ V与单词边界

时间:2014-12-12 11:18:23

标签: regex vim match word-boundary

我遇到的问题是我想在匹配函数中组合\ V和字边界,如下所示:

let index = match(line, "\\<\V".pattern."\v\\>")

以下作品完美无缺:

let index = match(line, "\\<".pattern."\\>")

有没有人知道如何将这两件事结合起来?

1 个答案:

答案 0 :(得分:2)

即使使用\V,反斜杠仍具有特殊含义,因此\<...\>应继续有效。我个人会把\V放在前面,并使用单引号来避免加倍反斜杠:

let index = match(line, '\V\<'.pattern.'\>')

我猜你打算将pattern中的任何文字文本作为整个单词进行匹配。为了工作,你仍然需要逃避反斜杠。这就是通常的做法:

let index = match(line, '\V\<'.escape(pattern, '\').'\>')

这可能无法匹配的原因是pattern没有以关键字字符开头/结尾。如果您需要处理,则必须先检查pattern,然后才有条件地添加\<\>。 (可以通过与\k匹配来完成检查。)