vscode 的正则文字搜索与替换用法小结
[visual studio code][1] 是一款通用编辑器,功能强大,扩展丰富,而且免费。日常工作中,常可以利用 vscode 来处理文字,其利用 [ripgrep][2] 1实现了急速的正则搜索与替换。在实际工作当中,有些时候需要使用一些特别的文字操作,比如下面一段文字是《曹全碑》字帖的文字,需要每隔 7个字嵌入一个空格,并且每隔三段文字换行一次,这样形成的篇章,正好与字帖照片相符。
《曹全碑》部分文字如下:
君諱全字景完敦煌效穀人也其先蓋周之冑武王秉乾之機翦伐殷商既定爾勳福祿攸同封弟叔振鐸于曹國因氏焉秦漢之際曹參夾輔王室世宗廓土斥竟子孫遷于雍州之郊分止右扶風或在安定或處武都
首先进行每21个字换行处理:
- 搜索:
(.{21})
( . 表示任意字符, {21} 表示重复21次, 括弧表示这是一个整体) - 替换为:
$1\n
($1 代表前面用括弧扩起来的整体部分2)
然后进行每7个字加空格处理
- 搜索:
([^ ]{7})
([^ ] 表示除了空格之外的所有字符,其实这里也可以用 . 来实现同样功能) - 替换为:
$1
(注意最后面有个空格)
这样就形成下面的成果:
乾之機翦伐殷商 既定爾勳福祿攸 同封弟叔振鐸于
曹國因氏焉秦漢 之際曹參夾輔王 室世宗廓土斥竟
子孫遷于雍州之 郊分止右扶風或 在安定或處武都
这里有一点需要注意,就是完整搜索功能是较新版本的 vscode 才有,当前(2018年8月)最新版本是 1.26.1,支持回车(\n)等特殊字符,支持搜索样式结果占位符($1、$2 等)。
详细的正则表达式搜索规则,请参考[MDN JavaScript 正则表达式手册][3] 或者 [ECMAScript 5 文档][4],以及 stackoverflow 上的回答
[1]: https://code.visualstudio.com
[2]: https://github.com/BurntSushi/ripgrep
[3]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
[4]: https://www.ecma-international.org/ecma-262/5.1/