用于在最后一个括号 () 之间获取文本的正则表达式
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+\)).)*$/
【讨论】:
以上是关于用于在最后一个括号 () 之间获取文本的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章