regex - vscode 片段转换文件名正则表达式
问题描述
我正在尝试转换file-name.dto.ts
为FileName
片段。
${TM_FILENAME_BASE/^(.*)([^.*]).*/${1:/pascalcase}$2/}
但是,我不太确定如何转换第二个或第三个捕获组。
如果我们不用括号括起来,这是否意味着我们不捕获?
export class ${TM_FILENAME_BASE/^(.)([^.]*).*/${1:/upcase}$2/}Input {$2},
export class ${TM_FILENAME_BASE/^(.*).*/${1:/pascalcase}$2/}Output {},
解决方案
对于第一行(输入行),试试这个:
"export class ${TM_FILENAME_BASE/^([^-]*)-([^.]*).*/${1:/pascalcase}${2:/pascalcase}/}Input {$2},"
${TM_FILENAME_BASE}
独自一人让你file-name.dto
捕获组 1
^([^-]*)
为您提供第一个之前的部分-
匹配,
-
但您将在输出中忽略它,因此它不需要在捕获组中。在第一个
([^.]*)
之后捕获第 2 组-
.
其余的
.*
将匹配.dto
再次将被忽略,因此它不需要是捕获组,但必须匹配 - 您将有效地将其替换为任何内容。
替换为转换: ${1:/pascalcase}${2:/pascalcase}
因此两个捕获组的第一个字母将大写,其余小写。
在线上Output
,如果您正在寻找此结果:
export class FileNameOutput {}
利用
"export class ${TM_FILENAME_BASE/^([^-]*)-([^.]*).*/${1:/pascalcase}${2:/pascalcase}/}Output {},"
以防万一您没有意识到,在您的代码中:
export class ${TM_FILENAME_BASE/^(.)([^.]*).*/${1:/upcase}$2/}Input {$2},
最后一个{$2}
不是指任何捕获组 - 它在任何转换之外。它只是指一个制表位 - 你的光标会去哪里。让我知道您是否打算让决赛{$2}
实际上成为一个转换后的捕获组。
推荐阅读
- vue.js - 如何从 localStorage 反应性地呈现 Markdown?
- javascript - 我可以使用 Google 表单 API 在我的 Angular 应用程序中创建新表单吗?
- sql - 如何在 where 子句中过滤 'YYYY-MM-DD' 格式的日期?
- maven - 带有自定义控件和自定义 StringProperty 的 Proguard
- reactjs - 使“serverSideTranslations”功能通用
- javascript - 是的日期验证 - 开始日期不能与结束日期相同
- python - 如果 __name__ == "__main__" 则模拟:
- javascript - 未捕获的 SyntaxError:意外的严格模式保留字
- javascript - 我无法使用渲染项中的值
- flutter - 颤振中的功能