如何在vi(m)中使用查找和替换重新排序部分文本?

时间:2011-02-01 15:56:55

标签: search replace vi

我有这种格式的数据:

03/18/2010
03/18/2010
04/19/2010

我想将年份从每个日期字符串的末尾移到开头,如下所示:

2010/03/18
2010/03/18
2010/04/19

我需要搜索/替换模式来执行此操作。我想我可能需要像这样使用&符号:

:%s/'[0-9]\{2\}'\/'[0-9]\{2\}'\/'[0-9]\{4\}'/&3\/&1\/&2/

或者其他类似的东西,但我不确定。这种搜索/替换是否可行?如果是这样,有人会非常善良地启发我吗?

1 个答案:

答案 0 :(得分:3)

当然有可能。

:%s+\([0-9]\{2\}\)/\([0-9]\{2\}\)/\([0-9]\{4\}\)+\3/\1/\2+

我更改了以下内容:

  • 我使用+符号代替使用斜杠来分隔substitute命令的各个部分。分隔符不必是正斜杠。在%s成为分隔符之后放置的符号是什么。这很有用,因为我们需要在模式中使用正斜杠。

  • 我使用(转义)括号在正则表达式中创建组。这允许我们通过使用反斜杠后跟组的编号来在替换模式中引用这些组。组从左到右编号,从1开始,组0是整个匹配。

相关问题