vi中的正则表达式替换

今天接到了个任务,要将字符串Test("\r\nABC")替换为Test("ABC\n"),其中使用到了分组替换的方法,使用vi执行如下命令进行替换:

%s/"\(\\r\\n\)\([^\\]*\)"/"\2\\n"/g

 

%s - vi的替换命令 尾部的/g意味全局替换

 

"\(\\r\\n\)\([^\\]*\)" 部分 其中

\(\)的方式为匹配后为设定分组编号,系统会自动进行编号,后面通过\1 \2这样的方式来引用前面匹配的分组信息

\\r\\n为匹配 \r\n

[^\\]*为匹配非\的多个字符

 

\2\\n为由于是在%s的操作符和/作用下,所以意味着此部分为替换为第二分组和\n这样的字符串

 

/g为全文替换。

在学习阶段发现,有个很好用的网站,虽然不是很兼容vi的正则表达式匹配的方式,不过也很有用,尤其是对自行编写的表达式样式会进行分析和说明,甚是有用。

regex101.com

 

 

posted @ 2014-06-25 14:29  菜菜芥末墩  阅读(1074)  评论(0编辑  收藏  举报