gpt4 book ai didi

javascript - 正则表达式,括号之间的捕获,javascript

转载 作者:行者123 更新时间:2023-11-29 21:14:05 34 4
gpt4 key购买 nike

我有正则表达式来提取括号之间的值。

大部分时间都有效,但以括号结尾时无效

var val = 'STR("ABC(t)")';
var regExp = /\(([^)]+)\)/;.
var matches = regExp.exec(val);

console.log(matches[1]); //"ABC(t"

我想要的是"ABC(t)".

我有什么想法可以修改我的正则表达式来实现这个吗?

更新该值始终在括号内。

一些例子:

'ASD("123")'; => '123'
'ASD(123)'; => '123'
'ASD(aa(10)asda(459))'; => 'aa(10)asda(459)'

所以首先有一些文本(总是文本)。然后是 (,它总是以 ) 结尾。我想要之间的值。

最佳答案

您可以在第 1 组模式中使用贪心点匹配:/\((.+)\)/。它将匹配行中的第一个 (,然后是换行符号以外的任何 1+ 个字符,然后是最后一个 )

var vals = ['STR("ABC(t)")', 'ASD("123")', 'ASD(123)', 'ASD(aa(10)asda(459))'];
var regExp = /\((.+)\)/;
for (var val of vals) {
var matches = regExp.exec(val);
console.log(val, "=>", matches[1]);
}

回答评论:如果要提取的文本必须在嵌套的平衡括号内,要么是一个小的解析代码,要么是XRegExp#matchRecursive可以帮助。由于SO上有很多解析代码,我将提供XRegExp示例:

var str = 'some text (num(10a ) ss) STR("ABC(t)")';
var res = XRegExp.matchRecursive(str, '\\(', '\\)', 'g');
console.log(res);
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/xregexp-all-min.js"></script>

关于javascript - 正则表达式,括号之间的捕获,javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40279548/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com