我可以得到这样的字符串:
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
换句话说,我必须得到以模块文件夹名称结尾的子字符串。
我想使用正则表达式,我想使用它们。但我在正则表现方面表现不佳。我必须尽快获得这些子串。请你能为我提供最快速的正则表达式吗?或者也许有另一种更快的方法来获得这些子串?
尝试
/.*?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"]