gpt4 book ai didi

javascript - 如何使用正则表达式匹配包含字符串的所有路径,但前提是它们是子文件夹的子文件夹?

转载 作者:行者123 更新时间:2023-12-04 07:24:59 25 4
gpt4 key购买 nike

我使用 jest.js 进行测试。通过添加为 regexp 来“忽略”文件夹的规定图案。
模式对象将如下所示:

 "testPathIgnorePatterns": [
"<rootDir>/node_modules/",
"<rootDir>/dist/",
"<rootDir>/src/app/setup-config/(.*)+/.*state.*"
],
在最后一行代码中,我试图从我使用的“setup-config”的任何子项中跳过所有“state”命名的文件夹 regexp图案。但它不起作用。我尝试使用正则表达式作为 /*/而不是 (.*)那也行不通。
忽略所有 state 的正确正则表达式是什么? setup-config 子文件夹中的命名文件夹?
为了清楚起见,我给出了文件夹结构。
Folder-structure

最佳答案

您将 Regex 与 Glob 模式混淆了。了解差异很重要。例如,Jest 的 testMatch需要一个 Glob,而 testRegex需要一个正则表达式。testPathIgnorePatterns需要正则表达式,而不是 Glob。 f/*/因为 Glob 模式将匹配 f 的子目录,但作为正则表达式,它匹配 f后跟零个或多个 /后跟一个 / ,例如“F//////”。
所以你需要找出匹配路径中子目录的正则表达式。(.*)+作为正则表达式完全没有意义。它的意思是“一个或多个(零个或多个任何字符)🤔。将 *+ 像这样组合在逻辑上是没有意义的。使用 .*.+ ,而不是同时使用。
您的下一个问题是使用 .因为它匹配任何字符,包括 / .这意味着 .*将匹配所有内容到字符串的末尾。它不会停在第一个 / ,这显然是你想要的。
所以你需要思考:我如何匹配一系列字符作为子目录名称,并让它停在第一个 / ?那将是 [^/]+ ,或在完整上下文中:

"<rootDir>/src/app/setup-config/[^/]+/.*state.*"
这应该可以解决问题。

ℹ️ Technically [^/]+ would also match .. (parent dir) and . (same dir) path tokens, and thus is not guaranteed to match only child directories. I doubt Jest would test such paths against this Regex, so I think you should be fine.


这个正则表达式可能还有一个问题: .*state.* .你说

"I am trying to skip all "state" named folder(s)"


我不确定这意味着什么。所有带有“状态”字样的文件夹?如果路径末尾的测试文件名(不是目录名)包含单词“state”怎么办?也应该排除吗?因为此模式排除了任何包含“state”一词的任何路径(在我们在前一个模式中匹配的子目录下方)。由于您对此不清楚,因此我假设这不会成为问题。
随时让我知道。

关于javascript - 如何使用正则表达式匹配包含字符串的所有路径,但前提是它们是子文件夹的子文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68264651/

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