regex - Vim 提取/复制文件中的所有多行模式

标签 regex vim multiline

我有一个大文件,我只想复制文件中与正则表达式(多行)模式匹配的部分。我在某个地方(可能是 StackOverflow)找到了我可以这样做的地方:

:g/z=45117\.1[0-9]\{2}nm\_.\{-}end/y

此模式找到了我期望的所有条目,但抽出操作仅抽出找到的第一个匹配项的第一行

我需要什么 vim 魔法来抽取多行模式的所有匹配项的所有行?

最佳答案

在命令末尾添加一个带空格的A:

:g/z=45117\.1[0-9]\{2}nm\_.\{-}end/y A

它将模式拉入寄存器 a,因此您可能希望在命令之前清除它:

:let @a = ''

关于regex - Vim 提取/复制文件中的所有多行模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57682481/

相关文章:

java - 如何删除给定值以外的所有字符串

android - React Native 多行 ReturnKeyType 错误

powershell - 如何输入多行命令

python - 为什么这个正则表达式在第一个捕获组再次出现之前不匹配所有内容?

java - reSTLet 引擎中带有长字符串的 Pattern.match 的 StackoverflowError

regex - 301 重定向仅适用于 .asp,不适用于 .aspx

java - 根据正则表达式,Castor 未将值识别为有效

python - Vim 中的片段与缩写

bash - 使用 bash 命令行,如何将 "import package.name.*;"添加到许多 java 文件?

vim - 自动 ctrl-w w 到 vimrc