Regex 如何将代码段占位符从CamelCase转换为snake\u case
我想创建一个VS代码片段,其中我在Regex 如何将代码段占位符从CamelCase转换为snake\u case,regex,camelcasing,vscode-snippets,snakecasing,Regex,Camelcasing,Vscode Snippets,Snakecasing,我想创建一个VS代码片段,其中我在CamelCase中输入了一个部分,相同的字符串在snake\u case中的其他地方输出 这是我尝试过的代码片段,但我有一个尾随的\uu,需要手动删除,这并不理想: “测试”:{ “前缀”:“测试”, “正文:“${1}->${1/([A-Z])+([A-Z]+)/${1:/downcase}${2}\UG}” }, 为了区分最后一个捕获组(如Abcd和前面的捕获组),我使用了一个替代选项: ([A-Z][A-Z]+$)|([A-Z][A-Z]+)必须按此顺
CamelCase
中输入了一个部分,相同的字符串在snake\u case
中的其他地方输出
这是我尝试过的代码片段,但我有一个尾随的\uu
,需要手动删除,这并不理想:
“测试”:{
“前缀”:“测试”,
“正文:“${1}->${1/([A-Z])+([A-Z]+)/${1:/downcase}${2}\UG}”
},
为了区分最后一个捕获组(如Abcd
和前面的捕获组),我使用了一个替代选项:
([A-Z][A-Z]+$)|([A-Z][A-Z]+)
必须按此顺序排列
因此,由于$
指示器,组1将位于输入的末尾,而组2将不在末尾。组2s之后将始终至少有一个以上的组。然后,使用条件${2:+}
仅在有组2的情况下插入下划线,因为必须有以下组1
如果您有不同的工作流,此keybinding版本也适用:
{
"key": "alt+3", // whatever keybinding you wish
"command": "extension.multiCommand.execute",
"args": {
"sequence": [
"cursorWordLeftSelect",
"editor.action.transformToSnakecase",
"editor.action.transformToLowercase",
// "cursorLineEnd" // if you want this
]
},
"when": "editorTextFocus && !editorHasSelection"
}
键入您的单词并触发键绑定。使用宏扩展名
{
"key": "alt+3", // whatever keybinding you wish
"command": "extension.multiCommand.execute",
"args": {
"sequence": [
"cursorWordLeftSelect",
"editor.action.transformToSnakecase",
"editor.action.transformToLowercase",
// "cursorLineEnd" // if you want this
]
},
"when": "editorTextFocus && !editorHasSelection"
}