首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex (带有查找/后置扩展),用于对node_modules中除某个子文件夹之外的任何内容进行机器处理

Regex (带有查找/后置扩展),用于对node_modules中除某个子文件夹之外的任何内容进行机器处理
EN

Stack Overflow用户
提问于 2022-02-18 16:05:15
回答 1查看 77关注 0票数 0

对于配置代码转换的Jest配置文件,我试图创建一个模式,该模式将忽略node_modules/.pnpm中的所有文件,但某个包(@react-unicons的一个分支)除外,但在整个前瞻性尝试中始终失败,要么匹配太多,要么太少。

这有可能吗?

从下面的字符串列表中,我只想从.pnpm中筛选出除文件夹github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704以外的所有其他行。这意味着来自node_modules/.pnpm外部的文件需要保存在输出中。

代码语言:javascript
复制
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-times.js",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-arrow-left.js",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/.github/workflows/autotag.yml",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-transaction.js",
/home/me/code/proj-foo/node_modules/",
"/home/me/code/proj-foo/node_modules/exif-js",
"/home/me/code/proj-foo/node_modules/eslint-plugin-testing-library",
"/home/me/code/proj-foo/node_modules/@typescript-eslint",
"/home/me/code/proj-foo/node_modules/chart.js",
"/home/me/code/proj-foo/node_modules/@iconscout",
"/home/me/code/proj-foo/node_modules/@iconscout/react-unicons",
"/home/me/code/proj-foo/node_modules/react-redux",
"/home/me/code/proj-foo/node_modules/.bin",
"/home/me/code/proj-foo/node_modules/stmux",
"/home/me/code/proj-foo/node_modules/only-allow",
"/home/me/code/proj-foo/node_modules/react-addons-deep-compare",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs/MainGuiLayout.tsx",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs/AppWrapper.jsx"

代码语言:javascript
复制
const files = [
"/home/me/code/proj-foo/node_modules/.pnpm/@babel+runtime@7.17.2/node_modules/@babel/runtime/regenerator/index.js",
"/home/me/code/proj-foo/node_modules/.pnpm/regenerator-runtime@0.13.9/node_modules/regenerator-runtime/runtime.js",
"/home/me/code/proj-foo/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isEmpty.js",
"/home/me/code/proj-foo/node_modules/.pnpm/@material-ui+core@4.12.3_b8fdba992ce7d797017dc07106486496/node_modules/@material-ui/core/Zoom/Zoom.js",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-times.js",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-arrow-left.js",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/.github/workflows/autotag.yml",
"/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-transaction.js",
"/home/me/code/proj-foo/node_modules/.pnpm/github-slugger@1.4.0",
"/home/me/code/proj-foo/node_modules/.pnpm/github-slugger@1.4.0/node_modules",
"/home/me/code/proj-foo/node_modules/.pnpm/github-slugger@1.4.0/node_modules/github-slugger",
"/home/me/code/proj-foo/node_modules/",
"/home/me/code/proj-foo/node_modules/exif-js",
"/home/me/code/proj-foo/node_modules/eslint-plugin-testing-library",
"/home/me/code/proj-foo/node_modules/@typescript-eslint",
"/home/me/code/proj-foo/node_modules/chart.js",
"/home/me/code/proj-foo/node_modules/@iconscout",
"/home/me/code/proj-foo/node_modules/@iconscout/react-unicons",
"/home/me/code/proj-foo/node_modules/react-redux",
"/home/me/code/proj-foo/node_modules/.bin",
"/home/me/code/proj-foo/node_modules/stmux",
"/home/me/code/proj-foo/node_modules/only-allow",
"/home/me/code/proj-foo/node_modules/react-addons-deep-compare",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs/MainGuiLayout.tsx",
"/home/me/code/proj-foo/code/my-app/src/components/one-offs/AppWrapper.jsx"
]

const nodeModulesPattern = 'node_modules'
const nodeModulesPattern0 = 'node_modules/.pnpm'
const nodeModulesPattern1 = 'node_modules/(?!@iconscout)'
const nodeModulesPattern2 = 'node_modules/(?!\.pnpm)'
const nodeModulesPattern3 = 'node_modules/.pnpm/(?!(github.com\+ACME))/'

const re = new RegExp(nodeModulesPattern0)

// only print what does NOT match
for ( const line of files ) {
  if(!re.test(line)) console.log("NO match: ", line); 
}

正确的regex意味着输出wuold包含以"NO match:“开头的行,用于所有以下文件(这是上面files数组的子集):

代码语言:javascript
复制
    "/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-times.js",
    "/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-arrow-left.js",
    "/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/.github/workflows/autotag.yml",
    "/home/me/code/proj-foo/node_modules/.pnpm/github.com+ACME+react-unicons@763e2d31e16c2abba8924f5d5970452912f18704/node_modules/@iconscout/react-unicons/icons/uil-transaction.js",
    "/home/me/code/proj-foo/node_modules/",
    "/home/me/code/proj-foo/node_modules/exif-js",
    "/home/me/code/proj-foo/node_modules/eslint-plugin-testing-library",
    "/home/me/code/proj-foo/node_modules/@typescript-eslint",
    "/home/me/code/proj-foo/node_modules/chart.js",
    "/home/me/code/proj-foo/node_modules/@iconscout",
    "/home/me/code/proj-foo/node_modules/@iconscout/react-unicons",
    "/home/me/code/proj-foo/node_modules/react-redux",
    "/home/me/code/proj-foo/node_modules/.bin",
    "/home/me/code/proj-foo/node_modules/stmux",
    "/home/me/code/proj-foo/node_modules/only-allow",
    "/home/me/code/proj-foo/node_modules/react-addons-deep-compare",
    "/home/me/code/proj-foo/code/my-app/src/components/one-offs",
    "/home/me/code/proj-foo/code/my-app/src/components/one-offs/MainGuiLayout.tsx",
    "/home/me/code/proj-foo/code/my-app/src/components/one-offs/AppWrapper.jsx"
EN

回答 1

Stack Overflow用户

发布于 2022-03-10 11:30:12

这里有一个建议:我们要么接受

在前7个组/+名称github\.com\+ACME\+react-unicons

  • 中不包含pnpn的行,包含字符串

的行

代码语言:javascript
复制
^(((?!pnpm).)*|.*github\.com\+ACME\+react-unicons.*)$
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71176496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档