今天接到了个任务,要将字符串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
vi中的正则表达式替换
时间: 2024-12-16 20:36:41