visual-studio-code - 在 vscode 片段正则表达式中使用美元符号
问题描述
我正在尝试制作一个从$code
占位符输入生成此行的 vs 代码 php 片段:
Utils::getLogger.debug("code", ["code" => $code])
我为此使用的正则表达式是/(\$?)(.*)/
(我对第二个捕获组感兴趣以获取变量名)。
这是我的代码段:
"log debug": {
"prefix": ["log debug", "debug"],
"body": ["Utils::getLogger.debug(\"${1/(^\\$?)(.*)/$2/}\", [\"${1/(^\\$?)(.*)/$2/}\" => ${1:variable}])"],
"description": "Quick variable debug."
},
问题是它不能替换我输入的美元符号。如果我$variable
作为占位符给出,它会生成Utils::getLogger.debug("$variable", ["$variable" => $variable])
.
我让它为一个不同于美元符号的字符工作,例如一个逗号或另一个字母,我也让它工作使用TM_SELECTED_TEXT
变量并在之前选择我的变量。
我怀疑这与 vscode 中的 vs code php 变量名自动完成有冲突,就好像我复制了我的变量然后调用代码段并将变量粘贴到占位符中(而不是键入它),它也可以工作。
我很想将此作为问题发布在 vscode github 上,但可能在这里做错了。
ps:我知道也可以在没有的情况下输入变量名$
并将其添加到替换正则表达式中,但是您知道开发人员可以...
解决方案
这有效:
"body": ["Utils::getLogger.debug(\"${2:${1/\\$?(.*)/$1/}}\", [\"$2\" => ${1:variable}])"],
请注意,由于您正在重用第一个转换,因此我将其设置为一个占位符${2}
,如下所示:
${2:${1/\\$?(.*)/$1/}}
现在,您可以在任何需要相同转换结果的地方重用该$2
占位符- 就像在.\"$2\" =>
推荐阅读
- javascript - 使用 Regex JS 删除字符串中的重复单词
- android - 使用 Mockito 测试最小的实时数据视图模型
- java - Java将差异数组转换为变量
- python - Virtutalenv 命令“python setup.py egg_info”失败,错误代码为 1
- javascript - 尽管 API 已激活,但在尝试使用嵌入地图 API 时出现 ApiNotActivatedMapError
- java - Spring Boot 仅在 IDE 中工作
- javascript - 从特殊字符前后的字符串中获取值 - Jquery
- r - 将 XLS 转换为 CSV - R(试用 Rio 包)
- java - LocalDateTime 和 SQL Server JDBC 4.2 驱动程序
- postgresql - 为什么不同的查询值会产生不同的索引算法?