如何在 vscode 用户代码段中使用正则表达式 return 来自 TM_FILEPATH 的目录?

How to use Regex to return a directory from TM_FILEPATH in vscode user snippets?

我正在寻找一种方法来创建用户片段以从项目中获取核心目录。这是我使用的示例路径:

C:dev/Pseudope/Unreal/Cubicle/Source/CubicleCore/Private

创建 vscode 片段时 ${TM_FILEPATH} 将 return 此路径与正则表达式一起使用。我希望能够将这些片段用于不同的项目,这些项目都具有与上面的文件路径相同的结构,其中我想应用于片段的文本将始终嵌套在 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, Log, TEXT("Hello");

任何 help/direction 将不胜感激。

你可以使用

"UE_LOG(Log${TM_FILEPATH/.*Source[\\\/]([^\\/]+)[\\\/](?:Private|Public).*//}, Log, TEXT(\"Hello\")"

参见regex demo

详情:

  • .* - 尽可能多的任意零个或多个字符
  • Source - Source
  • [\\/] - /\
  • ([^\\/]+) - 第 1 组 (</code>):除 <code>\/
  • 之外的任何一个或多个字符
  • [\\/] - 一个 /\ 字符
  • (?:Private|Public) - PrivatePublic 字符串
  • .* - 尽可能多的任意零个或多个字符。