用于获取最后一个方括号 () 之间的文本的正则表达式

Regex for getting text between the last brackets ()

本文关键字:之间 文本 正则表达式 获取 最后一个 方括号 用于      更新时间:2023-09-26

我想使用 javascript 提取最后()之间的文本

例如

var someText="don't extract(value_a) but extract(value_b)";
alert(someText.match(regex));

结果应该是

value_b

感谢您的帮助

试试这个

'(([^)]*)')[^(]*$

在正则表达式上看到它

var someText="don't extract(value_a) but extract(value_b)";
alert(someText.match(/'(([^)]*)')[^(]*$/)[1]);

括号内的部件存储在捕获组 1 中,因此您需要使用 match()[1] 来访问结果。

一个有效的解决方案是让.*在最后一次(之前消耗所有内容

var str = "don't extract(value_a) but extract(value_b)";
var res = str.match(/.*'(([^)]+)')/)[1];
console.log(res);

  • .*'(匹配任意数量的任意字符,直到最后一个文字(
  • ([^)]+)捕获一个或多个未)字符
  • [1]抓取组 1(第一个捕获组)的捕获。
  • 对多行字符串使用 ['s'S] 而不是.点。

这是正则表达式101的演示

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

(?=[^()]*$),前瞻断言在输入结束之前没有更多的括号。

如果最后一个右括号总是在句子的末尾,你可以使用乔纳森的答案。否则,这样的事情可能会起作用:

/'(('w+)')(?:(?!'('w+')).)*$/