正则表达式搜索和替换括号中的其余行

时间:2012-08-04 15:10:54

标签: regex vim

我有一些python代码有很多这样的行:

print "some text" + variables + "more text and special characters .. etc"

我想修改它以将打印后的所有内容放在括号内,如下所示:

print ("some text" + variables + "more text and special characters .. etc")

如何使用正则表达式在vim中执行此操作?

2 个答案:

答案 0 :(得分:2)

使用此替代品:

%s/print \(.*$\)/print (\1)

\(.*$\)匹配到行尾的所有内容,并使用转义括号将其捕获到一个组中。替换包括使用\1的此组,由字面括号括起来。

答案 1 :(得分:1)

:%s/print \(.*\)/print(\1)/c

或者,如果您在视觉上选择了多行

:'<,'>s/print \(.*\)/print(\1)/c

% - 每一行
'<,'> - 选定的行
s - 替代
c - 确认 - 在转换之前显示匹配的内容 print \(.*\) - 完全匹配打印后跟空格,然后将\(\)之间的所有内容分组。 print(\1) - 替换为print(&lt; first match&gt;)

Vim有正则表达式的一些功能规则,你可以:help substitute:help regex查看它们是什么。