Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何将代码段占位符从CamelCase转换为snake\u case_Regex_Camelcasing_Vscode Snippets_Snakecasing - Fatal编程技术网

Regex 如何将代码段占位符从CamelCase转换为snake\u case

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]+)必须按此顺

我想创建一个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]+)
必须按此顺序排列

因此,由于
$
指示器,组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"
}