gpt4 book ai didi

php - VSCODE 片段 PHP 自动填充命名空间

转载 作者:行者123 更新时间:2023-12-05 02:42:52 27 4
gpt4 key购买 nike

我正在尝试创建一个 VSCODE CODE SNIPPET对于PHP自动放置命名空间(基于文件夹路径)。

想法是对当前文档的目录进行替换,考虑到我所有的类都位于 MVC 文件夹中,并且它位于 src 文件夹,示例:

  • /dev/project/src/MVC/Models/Access/Auth,或者
  • /home/user/dev/project/src/MVC/Models/Access/Auth,或者
  • /any_other_folder/src/MVC/Models/Access/Auth

我用 VSCODE 片段变量 $TM_DIRECTORY 得到了完整的文件夹名称。

显然在 REGEX 上没有错误,正如您在以下位置看到的:https://regex101.com/r/P8CpkX/1

我对截断代码的尝试:

"namep": {
"prefix": [
"namep"
],
"body": [
"",
"// TM_DIRECTORY: $TM_DIRECTORY",

"namespace ${TM_DIRECTORY/.*src\/(([^\/]*)(\/)?)|(\/)([^\/]*)/$2\\$5/g};"
],
"scope": "php",
"description": "Try to put namespace automatically"
}

结果是:

// TM_DIRECTORY: /home/user/dev/project/src/MVC/Models/Access/Auth
namespace ${TM_DIRECTORY/.*src/(([^/]*)(/)?)|(/)([^/]*)/$5/g};

但预期的是(如 REGEX 所示):

// TM_DIRECTORY: /home/user/dev/project/src/MVC/Models/Access/Auth
namespace \MVC\Models\Access\Auth;

谁能帮忙修一下?

非常感谢!!!

最佳答案

你可以使用

"namep": {
"prefix": [
"namep"
],
"body": [
"namespace \\\\${TM_DIRECTORY/(?:.*[\\/\\\\])?src[\\/\\\\]([^\\/\\\\]*)[\\/\\\\]?|[\\/\\\\]([^\\/\\\\]*)/$1\\$2/g}",
],
"scope": "php",
"description": "Try to put namespace automatically"
}

参见 regex demo .

匹配

  • (?:.*[\/\\])? - 尽可能多地出现除换行符以外的任何 0+ 个字符,然后 \/
  • src[\/\\] - src 字符串,然后是 //\
  • ([^\/\\]*) - 第 1 组:/\
  • [\/\\]?- 可选的 //\ 字符
  • | - 或者
  • [\/\\] - \/ 字符
  • ([^\/\\]*) - 第 2 组:/\

演示:

enter image description here

关于php - VSCODE 片段 PHP 自动填充命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67227870/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com