给定一个像 https://xxxxxxxxxx.cloudfront.net/dir1/dir2/file.ext
这样的字符串,我想得到 dir2
我有这个正则表达式:/(\.net\/)([^\/]*)/
,但这只能让我获得捕获组 dir1
我如何修改它以匹配 dir2
?
我正在使用正则表达式一步替换字符串。
.replace(/(\.net\/)([^\/]*)/,'$1'+'newfilename'
所以我不想仅仅提取dir2
。我希望我的正则表达式匹配它。以便我可以更换它。
最佳答案
/.*\/([^\/]+)\/[^\/]*$/
捕获组 1 将是路径中的最后一个目录。
如果你想替换 dir2
而不是提取它,你的捕获组应该是所有除了那个目录:
str.replace(/(.*\/)[^/]+(\/[^\/]*)$/, '$1test$2');
> str = 'https://xxxxxxxxxx.cloudfront.net/dir1/dir2/file.ext'
> str.replace(/(.*\/)[^/]+(\/[^\/]*)$/, '$1test$2');
"https://xxxxxxxxxx.cloudfront.net/dir1/test/file.ext"
关于javascript - 匹配子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21148637/