1

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

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

例如,在 g// 命令的评估部分中会非常好,因此您可以执行以下操作

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

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

这可以做到吗?

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

4

2 回答 2

2

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

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

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

于 2010-01-04T19:03:40.790 回答
1

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

{pat}返回在搜索in时找到的 \1、\2、\3 等{expr}

例子:

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

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

于 2010-01-03T18:05:58.950 回答