VSCode代码片段支持通过变量插值+转换语法实现类正则文本处理,语法为${variable/regex/replacement/flags},如${1:/upcase}可将占位符内容转大写。
vscode 的代码片段(snippets)本身不直接支持正则表达式匹配或动态替换,但可以通过 变量插值 + 转换语法(transformation) 实现类似正则的文本处理效果——这是官方支持的进阶能力,常被忽略却非常实用。
在 snippet body 或其他变量引用中,可用如下格式对变量内容做“类正则”变换:
以下都是真实可运行的 snippet 片段(放入 javascript.json 或用户 snippets 中):
"${1:name}/([a-z])([A-Z])/g" → "$1_$2"userName → 输出 user_name
"${TM_FILENAME/(.+).[^.]+/$1/}"index.js 文件中触发 → 得到 index
"${1:word}/^(.)(.*)$/$1u$2/"hello → Hello;注意 u 表示下一个字符转大写"${1:text}/[\s-]+/g" → "_",再套一层:"${TM_SELECTED_TEXT/[\s-]+/_/g}"
VSCode 的转换基于 JavaScript RegExp,但有几点必须留意:
\s 表示空白符,\. 才能匹配字面量点号m flag 无效),因为 snippet 变量值默认是单行字符串(?)
$0 表示整个匹配,$& 同效;$$ 表示字面量 $
一个变量可链式多次转换,用分号隔开(VSCode 1.84+ 支持):
"${TM_SELECTED_TEXT/\s+/-/g;/[^a-zA-Z0-9-]/g;}""${TM_SELECTED_TEXT/[^a-zA-Z0-9\s]+//g;/\s+/-/g;}"(先清理,再替换)基本上就这些。不复杂但容易忽略 —— 掌握转换语法后,snippets 就从“模板补全”升级为“轻量文本处理器”了。
以上就是VSCode中的代码片段(Snippets)进阶:正则表达式转换的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号