如果匹配(g:可能性,“在vim \(script \)中的正则表达式之后使用反向引用?”)

时间:2010-01-03 15:33:20

标签: regex vim backreference

我希望能够在if块中检查$ 1的值,以获得第一个反向引用。但是vimscript不是perl。

有没有办法做到这一点?我知道在正则表达式中使用\ 1,\ 2等的可能性,但是我想匹配然后在后续语句中使用这些值,就像在perl,php等中一样。

例如,在g //命令的评估部分中使用它会非常好,所以你可以做一些像

这样的事情
:g/number: \(\d\+\)/b:number += v:matches[1] " or whatever the syntax is/could be

总计文件中某个数字的值。

可以这样做吗?

如果没有,有充分的理由吗?

2 个答案:

答案 0 :(得分:2)

在进一步的启示中,我已经完成了:lhelpgrep submatch | lope并且发现了至少一个其他有用的工具:您可以使用submatch({nr})命令的评估端的substitute。 EG

:s/there a\(r\)e n\(o \)stupid questions, on\(ly\) stupid people/\=toupper(submatch(2).submatch(1).submatch(3)."?")/

之前我尝试过这种方法,但我认为我正在搜索/ backref /并且没有得到我正在寻找的信息。

答案 1 :(得分:1)

matchlist({expr}, {pat}[, {start}[, {count}]])

返回在{pat}

中搜索{expr}时找到的\ 1,\ 2,\ 3等

示例:

  

echo matchlist('acd','(a)\?(b)\?(c)\?(。*)')

     

结果:['acd','a','','c','d','','','','','']