user1376366
user1376366

Reputation: 209

Regex for getting text between the last brackets ()

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

Upvotes: 19

Views: 14906

Answers (4)

bobble bubble
bobble bubble

Reputation: 18555

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);

Here is a demo at regex101

Upvotes: 10

stema
stema

Reputation: 93086

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.

Upvotes: 25

Avaq
Avaq

Reputation: 3031

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+\)).)*$/

Upvotes: 0

Alan Moore
Alan Moore

Reputation: 75272

/\([^()]+\)(?=[^()]*$)/

The lookahead, (?=[^()]*$), asserts that there are no more parentheses before the end of the input.

Upvotes: 7

Related Questions