Vscode 片段:使用正则表达式将文件名转换为大写句子

Vscode snippet: tranform filename to Capitalize sentence with a regex

我想在 Vscode 片段中将 filename-with-dashes.md 转换为 Filename with dashes

准确地说,我想从类似于 firt-post-ever.md 的文件名填充此代码段中的字段 "title" 并获取 First post ever:

"FrontMatter": {
    "scope": "markdown",
    "prefix": "frontmatter",
    "body": [
        "---",
        "title: '${TM_FILENAME_BASE/^([^-]*)-([^.]*).*/${1:/pascalcase} ${2:/capitalize}/}'",
        "draft: true",
[...]

我目前有什么:

此正则表达式将 filename-with-dashes.md 更改为 Filename with-dashes(← 最后我仍然需要删除破折号):

${TM_FILENAME_BASE/^([^-]*)-([^.]*).*/${1:/pascalcase} ${2:/downcase}/}

我查看的资源:

不幸的是,这些页面不足以找到正确的答案(我无法理解正则表达式的语法,尽管付出了很大的努力我还是无法理解..)有什么提示吗?

备注:

这是一个有效的片段:

"FrontMatter": {
    "scope": "markdown",
    "prefix": "frontmatter",
    "body": [
        "---",
        
        "title: '${TM_FILENAME_BASE/(^\w*)|(-)/${1:/pascalcase}${2:+ }/g}'",
        
        // if other words might have caps you don't want

        "title: '${TM_FILENAME_BASE/(^\w+)|(\w+)|(-)/${1:/pascalcase}${3:+ }${2:/downcase}/g}'",
        
        "draft: true"
    ]
}

(^\w+) 获取捕获组 1 中的第一个“单词”
(\w+) 获取捕获组 2 中的任何其他词
(-) 获取捕获组 3 中的任何 -

${1:/pascalcase}第一个单词首字母大写,第一个单词其余字母小写

${3:+ } 如果有第 3 组,添加一个 space - 从而用 spaces 替换任何 -