我想使用javascript
在最后()
之间提取文字
例如
var someText="don't extract(value_a) but extract(value_b)";
alert(someText.match(regex));
结果应为
value_b
感谢您的帮助
答案 0 :(得分:12)
试试这个
\(([^)]*)\)[^(]*$
var someText="don't extract(value_a) but extract(value_b)";
alert(someText.match(/\(([^)]*)\)[^(]*$/)[1]);
括号内的部分存储在捕获组1中,因此您需要使用match()[1]
来访问结果。
答案 1 :(得分:7)
/\([^()]+\)(?=[^()]*$)/
前瞻(?=[^()]*$)
断言在输入结束之前没有更多的括号。
答案 2 :(得分:5)
有效的解决方案是让.*
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]
代替.
点来表示多行字符串。答案 3 :(得分:0)
如果最后一个结束括号始终位于句子的末尾,则可以使用Jonathans的答案。否则这样的事情可能有用:
/\((\w+)\)(?:(?!\(\w+\)).)*$/