I want to extract the text between the last ()
using javascript
For example
var someText="don't extract(value_a) but extract(value_b)";
alert(someText.match(regex));
The result should be
value_b
Thanks for the help
I want to extract the text between the last ()
using javascript
For example
var someText="don't extract(value_a) but extract(value_b)";
alert(someText.match(regex));
The result should be
value_b
Thanks for the help
Try this
\(([^)]*)\)[^(]*$
See it here on regexr
var someText="don't extract(value_a) but extract(value_b)";
alert(someText.match(/\(([^)]*)\)[^(]*$/)[1]);
The part inside the brackets is stored in capture group 1, therefor you need to use match()[1]
to access the result.
An efficient solution is to let .*
consume everything before the last (
var str = "don't extract(value_a) but extract(value_b)";
var res = str.match(/.*\(([^)]+)\)/)[1];
console.log(res);
.*\(
matches any amount of any character until the last literal (
([^)]+)
captures one or more characters that are not )
[1]
grab captures of group 1 (first capturing group).[\s\S]
instead of .
dot for multiline strings./\([^()]+\)(?=[^()]*$)/
The lookahead, (?=[^()]*$)
, asserts that there are no more parentheses before the end of the input.
If the last closing bracket is always at the end of the sentence, you can use Jonathans answer. Otherwise something like this might work:
/\((\w+)\)(?:(?!\(\w+\)).)*$/