最有效率的正则表达式

问题描述 投票:-1回答:1

我可以得到这样的字符串:

D:/projects/my-project/node_modules/some-module/node_modules/lodash/some-folder/lodash.js
D:/projects/my-project/node_modules/some-module/node_modules/colors/some-folder/colors.js

从这些字符串中的任何一个,我必须得到下一个子串:

D:/projects/my-project/node_modules/some-module/node_modules/lodash
D:/projects/my-project/node_modules/some-module/node_modules/colors

换句话说,我必须得到以模块文件夹名称结尾的子字符串。

我想使用正则表达式,我想使用它们。但我在正则表现方面表现不佳。我必须尽快获得这些子串。请你能为我提供最快速的正则表达式吗?或者也许有另一种更快的方法来获得这些子串?

javascript node.js regex replace substr
1个回答
1
投票

尝试

/.*?node_modules(?!.*node_modules)\/[^/]*/

这就是找到任何其他node_modules没有遵循的node_modules字符串(负向前瞻),换句话说是最后一个字符串,然后将以下段转到正斜杠。

var s = "D:/projects/my-project/node_modules/some-module/node_modules/lodash/some-folder/lodash.js"
var r = /.*node_modules(?!.*node_modules)\/[^/]*/;

> s.match(r)
< ["D:/projects/my-project/node_modules/some-module/node_modules/lodash"]
© www.soinside.com 2019 - 2024. All rights reserved.