繁体   English   中英

正则表达式匹配文件夹内容的互补子组(webpack 供应商包)

[英]Regex to match complementary subgroups of a folder's contents (webpack vendor bundles)

我试图找出两个正则表达式,我将使用它们与 Webpack 一起创建两个不同的供应商包。

这是我的node_modules文件夹的简化列表:

  • autonumeric
  • core-js
  • jquery
  • jquery-ui
  • jquery.watch
  • marked

第一个供应商包应该是“essentials”包,假设是jquerycore-js

  • core-js
  • jquery

第二个供应商包应该包含node_modules所有其他包,除了jquerycore-js (这意味着正则表达式必须匹配jquery-ui )。

  • autonumeric
  • jquery-ui
  • jquery.watch
  • marked

这是我当前的正则表达式:

  • 基本包:/ /node_modules\\/(jquery|core-js)\\/.*\\.js/
  • “其余”包:/ /node_modules(?!\\/(jquery|core-js))(\\/[a-zA-Z0-9-_]+)+\\.js (?!\\/( /node_modules(?!\\/(jquery|core-js))(\\/[a-zA-Z0-9-_]+)+\\.js

问题是第二个正则表达式与jquery*库不匹配,可能是因为从jquery开始的负前瞻。

您需要在jquerycore-js之后添加对/ char 的检查,因为您只需要将它们作为整个子文件夹名称进行失败:

node_modules(?!\/(jquery|core-js)\/)(\/[^\/]+)+\.js
                                 ^^

或者,如果也可以有字符串结尾:

node_modules(?!\/(jquery|core-js)(\/|$))(\/[^\/]+)+\.js

查看正则表达式演示

请注意,我还建议将[a-zA-Z0-9-_]+替换为更通用的[^\\/]+ ,该[^\\/]+匹配除/之外的任何 1+ 字符,但如果您的要求更具体,您可以保留您的模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM