【发布时间】:2012-05-14 15:00:28
【问题描述】:
我想使用 javascript 提取最后一个 () 之间的文本
例如
var someText="don't extract(value_a) but extract(value_b)";
alert(someText.match(regex));
结果应该是
value_b
感谢您的帮助
【问题讨论】:
标签: javascript regex match
我想使用 javascript 提取最后一个 () 之间的文本
例如
var someText="don't extract(value_a) but extract(value_b)";
alert(someText.match(regex));
结果应该是
value_b
感谢您的帮助
【问题讨论】:
标签: javascript regex match
试试这个
\(([^)]*)\)[^(]*$
var someText="don't extract(value_a) but extract(value_b)";
alert(someText.match(/\(([^)]*)\)[^(]*$/)[1]);
括号内的部分存储在捕获组1中,因此您需要使用match()[1]来访问结果。
【讨论】:
一个有效的解决方案是让.* eat up在最后一个(之前的所有内容
var str = "don't extract(value_a) but extract(value_b)";
var res = str.match(/.*\(([^)]+)\)/)[1];
console.log(res);
.*\( 匹配 any amount 的 any character 直到最后一个文字 (
([^)]+) captures 一个或多个字符 that are not )
[1]grab captures。[\s\S] 而不是. 点。【讨论】:
/\([^()]+\)(?=[^()]*$)/
前瞻,(?=[^()]*$),断言在输入结束之前没有更多的括号。
【讨论】:
如果最后一个右括号总是在句尾,你可以使用乔纳森的答案。否则这样的事情可能会起作用:
/\((\w+)\)(?:(?!\(\w+\)).)*$/
【讨论】: