Regex -调整VS代码段以将标签转换为小写

fhity93d  于 2023-03-31  发布在  其他
关注(0)|答案(1)|浏览(101)

我正在尝试为VS Code创建一个基于“Section”名称创建标签的代码段:

"Headings | Section": {
        "prefix": "sec",
        "body": [
            "\\section{${1:section_name}} % (fold)",
            "\t\\label{sec:${2:${1/([^a-zA-Z0-9]+)/_/g}}}",
            "\t$0"
        ],
        "description": "Create a new section with an automatically generated label"
    },

删除非字母数字字符和用下划线替换空格都很好,但我正在尝试(目前无法)也使标签小写(\downcase)。
我尝试过实现各种变体,例如:

"\t\\label{sec:${2:${1/([^a-zA-Z0-9]+)/_/g}${1/(.)/${1:/downcase}/g}}}",

但没有得到想要的结果。

zlhcx6iw

zlhcx6iw1#

我想这就是你要找的东西--下写$1的第二个示例:

"Headings | Section": {
    "prefix": "sec",
    "body": [
        "\\section{${1:section_name}} % (fold)",
        // "\t\\label{sec:${2:${1/([^a-zA-Z0-9]+)/_/g}}}",
        "\t\\label{sec:${2:${1/([^\\s])|(\\s)/${1:/downcase}${2:+_}/g}}}",
        "\t$0"
    ],
    "description": "Create a new section with an automatically generated label"
},

${1/([^\\s])|(\\s)/${1:/downcase}${2:+_}/g}这将获取捕获组1中的所有非空白字符和捕获组2中的所有空白字符。
所有第1组都将被降级。
如果有一个组2,它将被替换为下划线,因为${2:+_}是一个有条件的替换,你可以把它放在片段中,说如果组2插入一个_

相关问题