在Javascript中我想得到一个表示两个括号之间所有文本的字符串,即使该字符串包含更多括号。
它的工作原理如下:
"(a)(b)(c)" .match(SOMETHING);
[""" B"" C"]
OR
""
"((a)(b)(c))" .match(SOMETHING);
"(a)(b)(c)"
答案 0 :(得分:2)
这应该可以解决问题:
(?:\()[^\(\)]*?(?:\))
\(
匹配左括号\)
匹配右括号[^\(\)]
匹配除了更多括号之外的任何内容*?
为上述模式添加零次或多次量词(由?
设置为懒惰)尝试:
your_string.match(/(?:\()[^\(\)]*?(?:\))/g)
答案 1 :(得分:0)
你是否关心这些parens是否匹配? 如果是这样,你将不得不使用堆栈,你不能使用正则表达式。
尝试这样的事情:
var str = "aaa((0)12(2))bbb";
var stack = [];
var result ="";
var start = false;
for (var i = 0; i < str.length; i++) {
switch (str[i]) {
case '(':
stack.push('(');
if (!start) {
start = true;
continue;
}
result += str[i];
break;
case ')':
if (stack[stack.length - 1] === '(') {
stack.pop();
if (stack.length === 0) {
start = false;
continue;
}
result += str[i];
} else {
//not balanced!
}
break;
default:
if (start){
result += str[i];
}
}
}
console.log(result);
&#13;