我有一个替换命令,可以捕获并显示替换字符串中的 submatch() 值。但我想在这一行下面解析另一行信息。该行始终是空行之后的第一行,尽管该空行的行数有所不同。例如:
The first important line I want to capture is here
Stuff I don't want.
A few more lines of stuff I don't want...
Second line I want to capture.
Run Code Online (Sandbox Code Playgroud)
这种模式在文档中重复一百次左右。我可以很好地替换“第一条重要行”,但是该搜索模式不应该包含一种跳到第一个空行,然后选择下一个“我想要捕获的第二行”的方法。?? 然后,我可以将第二行的内容放入子匹配括号中,并在需要的地方替换它们(对吗?)。
如果是这样,我无法找到扩展第一个搜索模式以捕获“第二行”的方法建议或纠正我的方法将不胜感激。
有人已经处理过类似的问题。下面我提供他们的解决方案和详细描述。
/^\nF\d\_.\{-}\_^\n\zs.*/+
它的意思是“找到以 F 和数字开头的行块,然后向前扫描到下一个空白行并选择其后的行。”
| 正则表达式的一部分 | 意义 |
|---|---|
^\n |
匹配行的开头,后跟换行符 - 即空行 |
F\d |
下一行以 F 开头,后跟数字 |
\_.\{-} |
\_.类似于.,但也匹配换行符。\{-}匹配前面的最小数量\_.。(如果我使用*代替\{-},它将匹配到文件末尾附近。) |
\_^\n |
匹配一个空行。\_^类似于^,但^仅适用于正则表达式的开头。 |
\zs |
比赛结束后,将比赛开始时间设置为此时。我使用它是因为我不想突出显示前面的文本。 |
.* |
匹配整条线。 |
after+正则表达式告诉 Vim 将光标放在选择后的行上。