当我具有全局模式时,找不到解决方案如何提取路径的特定部分。
我有如下所示的传入文件路径:
'src/features/gui/images/main/effects/lightning/1.png'
我想提取它的特定前导部分(总是路径的开头):
'src/features/gui/images/main/'
我有两个传入的glob模式(模式可能会更改,但始终会指向其中的目录和图像):
'src/features/*/images/*/'
'src/features/*/images/*/**/*.{png,jpg,gif}'
我想提取与传入文件路径中的模式#1匹配的目录路径。
我的直觉告诉我这应该是微不足道的,但找不到解决方案。我正在寻找一种仅对字符串(或regexp)进行操作且不对磁盘进行其他glob搜索的解决方案。我已经在NPM上搜索了各种JS模块,但是我发现的所有内容仅在path匹配glob模式而不是实际匹配子字符串时返回。
至少第一个模式很容易转换为正则表达式(请注意,我假设它们之间的目录名称仅包含\w
元字符内的字符),这又使您可以轻松获得所需的子字符串(在这种情况下,捕获组的索引为1
):
const regex = /^.*(src\/features\/\w+\/images\/\w+\/).*$/gm;
const str = 'src/features/gui/images/main/effects/lightning/1.png';
const match = regex.exec(str)
console.log(match[1]); // prints src/features/gui/images/main/