问题描述
我正在寻找一种方法来创建用户代码片段以从项目中获取核心目录。这是我正在使用的示例路径:
C:dev/Pseudope/Unreal/Cubicle/Source/CubicleCore/Private
创建 vscode 片段时,${TM_FILEPATH}
将返回此路径以与正则表达式一起使用。我希望能够将这些片段用于不同的项目,这些项目都具有与上述文件路径相同的结构,其中我想应用于片段的文本将始终嵌套在 Source 和 Private|Public 之间。这是我到目前为止的正则表达式:
(?<=Source\\)(.*)(?=\\Private|Public)
根据 https://regexr.com/,此表达式将针对值“CubicleCore”并将其分组到组 1。不幸的是,浏览器中的正则表达式与 vscode 如何解释它之间似乎存在脱节,因为我得到的结果是:
UE_LOG(Log${TM_FILEPATH/(?<=Source\)(.*)(?=\Private|Public)/},Log,TEXT("Hello");
什么时候应该:
UE_LOG(LogCubicleCore,TEXT("Hello");
任何帮助/方向将不胜感激。
解决方法
你可以使用
"UE_LOG(Log${TM_FILEPATH/.*Source[\\\\\\/]([^\\\\/]+)[\\\\\\/](?:Private|Public).*/$1/},Log,TEXT(\"Hello\")"
参见regex demo。
详情:
-
.*
- 尽可能多的零个或多个字符 -
Source
-Source
-
[\\\/]
-/
或\
-
([^\\\/]+)
- 第 1 组 ($1
):除\
和/
之外的任何一个或多个字符 -
[\\\/]
-/
或\
字符 -
(?:Private|Public)
-Private
或Public
字符串 -
.*
- 尽可能多的零个或多个字符。