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

如何使用正则表达式提取字符串中嵌套括号内的目标内容?

解决方案

可用正则写法

针对你给出的固定INSERT((内层内容),表名)格式的字符串,直接用以下正则即可,捕获组1就是你需要的内层括号内容:

INSERT\(\(([^)]+)\)

如果你的场景不需要绑定INSERT前缀,只要提取任意两层括号的内层内容,用这个即可:

\(\(([^)]+)\)

原正则错误原因

你之前写的\(([^)]*)\)只会匹配单个左括号开头、到下一个右括号结束的内容,匹配时会命中字符串里第一个左括号,最终拿到的结果会多带一个开头的左括号,不符合要求。

C++ 调用示例

结合你用到的regex_search方法,给出可直接运行的实现代码:

#include <iostream>
#include <string>
#include <regex>

int main() {
    std::string input = "INSERT((AIRBUS,A340,295,137),PlaneType)";
    // C++11及以上可用原始字符串写正则,不需要额外转义斜杠
    std::regex re(R"(INSERT\(\(([^)]+)\))");
    std::smatch match;
    if (std::regex_search(input, match, re)) {
        std::string target = match[1].str();
        // target就是需要的"AIRBUS,A340,295,137",可直接传入后续处理函数
        std::cout << target << std::endl;
    }
    return 0;
}

如果不用原始字符串语法,正则需要转义斜杠,写为"INSERT\\(\\(([^)]+)\\)"即可。

适配范围说明

当前正则默认内层括号中不存在其他嵌套括号,完全符合你给出的所有输入样本的格式要求。如果后续遇到内层带括号的场景,再调整正则逻辑即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:15:07