我有一个如下字符串:'(1) (2 (3))'
我想正则表达它以获得以下数组:['1', '2 (3)']
另一个例子:'(asd (dfg))(asd (bdfg asdf))(asd)'
- > ['asd (dfg)', 'asd (bdfg asdf)', ('asd')]
我试图搜索如何执行这样的正则表达式,但我只找到了被所有()
分割的,找不到任何东西只能过滤它们的最高级别。
答案 0 :(得分:1)
我没有看到用正则表达式解决它的方法,这是一种程序化的方法(尽管可能有更多优雅的方法来处理这个问题...特别是因为它非常脆弱,它依赖于括号来总是以正确的顺序应用)。
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);