[英]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”包,假设是jquery
和core-js
。
core-js
jquery
第二个供应商包应该包含node_modules
所有其他包,除了jquery
和core-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
开始的负前瞻。
您需要在jquery
或core-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.