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

C++14如何使用正则表达式从指定格式字符串中提取三个变量

C++14 正则提取实现方案

正确正则表达式

^([A-Z])->([A-Z]),([0-9]+)$

  • ^ 匹配字符串起始位置,避免前缀冗余内容干扰匹配
  • ([A-Z]) 第一个捕获组,匹配单个大写英文字母
  • -> 匹配固定分隔符
  • ([A-Z]) 第二个捕获组,匹配第二个单个大写英文字母
  • , 匹配逗号分隔符
  • ([0-9]+) 第三个捕获组,匹配1位及以上的数字
  • $ 匹配字符串结束位置,避免后缀冗余内容干扰匹配

完整代码示例

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

int main() {
    std::string target = "A->B,100";
    // 使用原始字符串字面量避免转义反斜杠,C++11及以上版本均支持
    std::regex pattern(R"(^([A-Z])->([A-Z]),([0-9]+)$)");
    std::smatch match_result;

    if (std::regex_match(target, match_result, pattern)) {
        // 第0个匹配项为完整匹配的字符串,从索引1开始对应三个捕获组内容
        std::string first_char = match_result[1].str();
        std::string second_char = match_result[2].str();
        std::string num_str = match_result[3].str();
        // 数字可按需转成整型:int num = std::stoi(num_str); 长整型用std::stoll

        // 测试输出
        std::cout << "第一个字母:" << first_char << std::endl;
        std::cout << "第二个字母:" << second_char << std::endl;
        std::cout << "数字:" << num_str << std::endl;
    } else {
        std::cout << "字符串格式不符合要求" << std::endl;
    }
    return 0;
}

扩展说明

  • 如果要提取的目标格式是大文本中的子段,删掉正则首尾的^和$,改用std::regex_search接口即可
  • 数字部分如果允许负数,可以把[0-9]+修改为-?[0-9]+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:15:03