Regex 如何配置vim和emacs中的搜索和替换字符串以处理部分匹配或不精确匹配?

Regex 如何配置vim和emacs中的搜索和替换字符串以处理部分匹配或不精确匹配?,regex,replace,partial-matches,Regex,Replace,Partial Matches,我需要搜索和替换部分匹配的字符串,下面有一个人为的示例。下面的例子是帮助指南中的html,我想复制它来添加我自己的网页 Open Link Open Link in Background Tab Upload Link Open Link in Foreground Tab Open Link in New Window Download Link Open Link in Incognito Window 假设我想将信息放入降价表或ascidoctor表中,要求在以for开头的行前面加上,然

我需要搜索和替换部分匹配的字符串,下面有一个人为的示例。下面的例子是帮助指南中的html,我想复制它来添加我自己的网页

Open Link
Open Link in Background Tab
Upload Link
Open Link in Foreground Tab
Open Link in New Window
Download Link
Open Link in Incognito Window
假设我想将信息放入降价表或ascidoctor表中,要求在以for
开头的行前面加上
,然后再加上
,但忽略以
Upload
Download
开头的其他行

如何构造搜索和替换字符串,使其仅在以
Open
开头的行上运行?插入
|
会很简单,但对
$
正则表达式进行添加
|
只对以
Open
开头的行进行添加将是一个问题

是否也可以同时在两侧执行搜索和替换,即在单个命令中执行插入和附加,或者这需要某种脚本?(我可以单独提出这个问题)


\(和\)包含一个要记住的模式匹配(匹配模式中可以有多个\(和\)),替换文本中的\1使用记住的文本。

我不理解这个问题。这不就是
:%s/^Open.*/|和|/
?@melpomene您的意思是
&
符号等于匹配的字符串,它周围的所有内容都用于替换?您可以在替换部分使用
&
。不需要捕获任何内容。如果要使用整个匹配字符串,则可以使用\(\),但\(\)允许收集同一字符串的多个部分。
s/^\(Open.*\)/|\1|/