【问题标题】:Match file within nested witin specific folder嵌套在特定文件夹中的匹配文件
【发布时间】:2019-01-04 05:44:38
【问题描述】:

我正在尝试匹配可行的package.json 文件以获取目录中的所有模块,包括嵌套模块。我遇到了一个问题,有人在他们的模块中有两个 package.json 文件。一个在根中,一个在嵌套。我只想将正则表达式与第一行而不是第二行匹配。我是否必须使用 path.sep 将字符串解析为数组,或者我可以仅使用正则表达式吗?

/Users/thomas/Desktop/exmaple/node_modules/stream-http/package.json
/Users/thomas/Desktop/exmaple/node_modules/stream-http/test/browser/package.json

模式

^.+\/node_modules\/.+\/package.json$

https://regexr.com/45qvr

【问题讨论】:

  • 如果您可以指望它直接存在于node_modules 内的目录中,只需重复非/ 字符? [^\/]+ 而不是 .+
  • ^.+\/node_modules\/[^\/]+\/package.json$

标签: javascript regex match


【解决方案1】:

使用.+ 贪婪地捕获任何字符,所以它总是尽可能匹配到最后找到一个package.json。如果你改用[^\/]+,它只会匹配不是/的字符,确保package.json只匹配在node_modules/下的一个目录之后。

^.+\/node_modules\/[^\/]+\/package.json$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多