我有一个如下所示的字符串:'(1) (2 (3))'
我想对其进行正则表达式以获得以下数组:['1', '2 (3)']
另一个例子:'(asd (dfg))(asd (bdfg asdf))(asd)'
-> ['asd (dfg)', 'asd (bdfg asdf)', ('asd')]
我试图搜索如何执行这样的正则表达式,但我只找到了按所有正则表达式分割的正则表达式()
,找不到任何东西来只过滤其中的最高级别。
我没有找到用正则表达式解决它的方法,这是一种编程方法(尽管可能有很多更优雅的方法来解决这个问题......特别是因为它非常脆弱,它依赖于始终应用括号以正确的顺序)。
var string = "(asd (dfg))(asd (bdfg asdf))(asd)".split(''),
result = [],
fragment = '',
countOpen = 0,
countClosed = 0;
string.forEach(function (character) {
fragment += character;
if (character === '(') {
countOpen += 1;
}
if (character === ')') {
countClosed += 1;
if (countOpen === countClosed) {
result.push(fragment.slice(1, -1));
fragment = '';
}
}
});
console.log(result);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)