给定字符串'/root/hello/hello/world'
我想提取路径中的倒数第二个组件,即第二次出现hello。
如果没有父部件,我希望它返回空。所以字符串/world
应该返回一个空字符串或null。
如何使用正则表达式或类似方法提取最后一个路径组件?
语言是javascript。
答案 0 :(得分:1)
您可以先在/
字符上split
the string将其转换为数组:
var split = '/root/hello/hello/world'.split('/')
-> ["", "root", "hello", "hello", "world"]
然后你可以抓住倒数第二项:
var result = split[split.length - 2]
...但您可能需要先检查阵列的长度:
var result;
if (split.length >= 2)
result = split[split.length - 2]
答案 1 :(得分:1)
你可以做到
let str = '/root/hello/hello/world';
let result = str.split('/');
console.log(result[result.length-2]);
答案 2 :(得分:0)
你不需要正则表达式,你可以拆分它。
const string = '/root/hello/hello/world';
// Split by the '/' character
const stringSplit = string.split('/');
// Slice the array, taking only the last 2 items.
// Then select the first one in the array
const myVal = stringSplit.slice(-2)[0];
// OR, using length
const myValLen = stringSplit[stringSplit.length - 2];
// OR, in one
const myValShort = string.split('/').slice(-2)[0];
答案 3 :(得分:0)
根据要求使用正则表达式,您可以使用
执行此操作([^/\n]*)\/[^/\n]*$
将第二个到最后一个部分捕获到捕获组1中。
([^/\n]*)
部分捕获(括号内)一段不是/
的字符,也不是新行(\n
)。 \/
确保后跟/
和[^/\n]*$
检查该行终于被另一个没有/
(或LF)的段终止。
var pathArray = [
'/root/hello/cruel/world',
'/root/hello/world',
'/root/world',
'/world'
],
re = /([^/\n]*)\/[^/\n]*$/;
pathArray.forEach(function (path) {
document.write( '"' + path + '" returns "' + re.exec(path)[1] + '"<br/>' );
});
&#13;