经过 1 周的搜索并尝试错误创建这个问题,希望有人愿意帮助我解决这个问题:
我的 VsCode 片段应转换以下内容:
D:\FolderX\FolderY\src\Folder1\Folder2\Folder3
into:
FOLDER1_FOLDER2_FOLDER3_FILENAMEBASE
文件夹3可以是可选的
如果到目前为止出现的是:
"body": [
"${TM_DIRECTORY/^.+(src\\\\)(.*)$/${2:/upcase}${3:/upcase}/g}_${TM_FILENAME_BASE/(.*)/${1:/upcase}/}",
],
到目前为止的结果是:
FOLDER1\FODLER2\FOLDER3_FILENAMEBASE
所以我现在需要做的就是改变\
to _
但如果可能的话,我希望在一次转变中实现这一点。
有人对我的问题有想法或更好的解决方案吗?
多谢
您可以使用
"body": [
"${TM_DIRECTORY/^(?:.*\\\\)?src\\\\|([^\\\\]+)|(\\\\)/${1:/upcase}${2:+_}/g}_${TM_FILENAME_BASE/.+/${0:/upcase}/}",
],
Details:
-
^
- 字符串的开头
-
(?:.*\\\\)?
- 除换行符之外的任何零个或多个字符的可选序列,尽可能多,然后
-
src\\\\
- src\
string
-
|
- or
-
([^\\\\]+)
- 第 2 组:除以下以外的一个或多个字符\
-
|
- or
-
(\\\\)
- 第 3 组:a\
char.
The ${1:/upcase}${2:+_}
替换意味着组 1 始终以大写形式返回,并且如果组 2 匹配(a\
char),它被替换为_
char.
The ${TM_FILENAME_BASE/.+/${0:/upcase}/}
被简化为有一个$0
反向引用整个匹配,无需用捕获组包装整个模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)