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

Posted

技术标签:

【中文标题】用于在最后一个括号 () 之间获取文本的正则表达式【英文标题】:Regex for getting text between the last brackets () 【发布时间】:2012-05-14 15:00:28 【问题描述】:

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

例如

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

结果应该是

value_b

感谢您的帮助

【问题讨论】:

【参考方案1】:

试试这个

\(([^)]*)\)[^(]*$

看here on regexr

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

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

【讨论】:

【参考方案2】:

一个有效的解决方案是让.* 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 组(第一个捕获组)的[1]grab captures。 对多行字符串使用[\s\S] 而不是. 点。

Here is a demo at regex101

【讨论】:

【参考方案3】:
/\([^()]+\)(?=[^()]*$)/

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

【讨论】:

这给了我文本和括号。 (value_b).. 我希望 o/p 是不带括号的 value_b..【参考方案4】:

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

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

【讨论】:

以上是关于用于在最后一个括号 () 之间获取文本的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式获取方括号之间的文本,包括差异?

用于捕获嵌套括号中的值的正则表达式

用于匹配嵌套括号内的特定文本的 C# 正则表达式

正则表达式提取方括号或大括号之间的文本

正则表达式在Javascript中获取括号之间的字符串

正则表达式返回括号之间的文本