我想使用javascript提取最后()之间的文本例如
()
var someText="don't extract(value_a) but extract(value_b)"; alert(someText.match(regex));
结果应该是
value_b
谢谢你的帮助
5w9g7ksd1#
试试这个
\(([^)]*)\)[^(]*$
看它here on regexr
var someText="don't extract(value_a) but extract(value_b)"; alert(someText.match(/\(([^)]*)\)[^(]*$/)[1]);
括号内的部分存储在捕获组1中,因此您需要使用match()[1]来访问结果。
match()[1]
kuuvgm7e2#
一个有效的解决方案是让.*消耗最后一个(之前的所有内容
.*
(
var str = "don't extract(value_a) but extract(value_b)"; var res = str.match(/.*\(([^)]+)\)/)[1]; console.log(res);
.*\(
([^)]+)
)
[1]
[\s\S]
.
Here is a demo at regex101
vh0rcniy3#
/\([^()]+\)(?=[^()]*$)/
前瞻(?=[^()]*$)Assert在输入结束之前没有括号。
(?=[^()]*$)
dluptydi4#
如果最后一个右括号总是在句尾,你可以使用乔纳森的答案。否则,类似下面的答案可能会起作用:
/\((\w+)\)(?:(?!\(\w+\)).)*$/
4条答案
按热度按时间5w9g7ksd1#
试试这个
看它here on regexr
括号内的部分存储在捕获组1中,因此您需要使用
match()[1]
来访问结果。kuuvgm7e2#
一个有效的解决方案是让
.*
消耗最后一个(
之前的所有内容.*\(
匹配any character的any amount,直到最后一个文字(
([^)]+)
captures一个或多个不是)
的字符[1]
grab captures的组1(第一捕获组)。[\s\S]
代替.
点。Here is a demo at regex101
vh0rcniy3#
前瞻
(?=[^()]*$)
Assert在输入结束之前没有括号。dluptydi4#
如果最后一个右括号总是在句尾,你可以使用乔纳森的答案。否则,类似下面的答案可能会起作用: