You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取字符串中最外层括号内的内容?

提取表达式中所有最外层括号内的内容

给定表达式 (2 + (4 - 2)) - (16 / 8),要提取所有最外层括号内的内容,核心是准确匹配成对的最外层括号——当遇到右括号且追踪栈为空时,说明当前是一个完整的最外层括号对。

实现思路

  • 用栈存储左括号的索引,用于追踪括号的嵌套层级;
  • 遍历字符串时,遇到左括号就将其索引压入栈;
  • 遇到右括号时弹出栈顶的左括号索引:
    • 若弹出后栈为空,说明当前右括号与刚弹出的左括号是一对最外层括号;
    • 截取这对括号之间的子串(左括号索引+1到右括号索引),加入结果数组;
  • 最终得到所有符合要求的内容。

完整代码实现

const str = "(2 + (4 - 2)) - (16 / 8)";
const result = [];
const stack = [];

for (let i = 0; i < str.length; i++) {
  if (str[i] === '(') {
    stack.push(i);
  } else if (str[i] === ')') {
    const leftIndex = stack.pop();
    // 栈为空时,确认是最外层括号对
    if (stack.length === 0) {
      result.push(str.substring(leftIndex + 1, i));
    }
  }
}

console.log(result); // 输出: ['2 + (4 - 2)', '16 / 8']

代码说明

  • 栈的作用是区分嵌套层级:内层括号的左括号会被压在栈顶,只有最外层右括号出现时,栈才会被弹空;
  • substring(leftIndex + 1, i) 直接跳过最外层的左右括号,提取括号内的完整内容;
  • 该方法能正确处理嵌套括号场景,不会误将内层括号识别为最外层。

内容的提问来源于stack exchange,提问作者Casey Squeens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:30:53