【问题标题】:How to get original string prefix in boost regex_search如何在 boost regex_search 中获取原始字符串前缀
【发布时间】:2013-08-20 16:59:58
【问题描述】:

我在 boost 中使用 regex_search,如下所示:

std::string symbol = "abcd1234";

boost::regex regExpr("(\\d{4})", boost::regex::icase);

boost::smatch regMatch;

boost::regex_search(symbol, regMatch, regExpr);

我需要得到的是:“abcd”,即原始字符串直到第一个匹配的 reg 表达式。 这怎么可能? 提前谢谢...

【问题讨论】:

  • 假设字符串后面总是跟着4位数字:(\\D*)\d{4}

标签: c++ regex search boost


【解决方案1】:

以下应该有效:

^(.*?)\\d{4}

说明:

^ - 字符串的开头
. - 通配符
.*? - 零个或多个 (*) 通配符 (.),非贪婪匹配(?),所以你得到的是第一场比赛,而不是最后一场

所以你匹配从字符串开头到数字的所有内容。

使用增强功能的替代方案:

regMatch.prefix() 应该返回所需的字符串。

【讨论】:

  • 随意单击答案旁边的复选标记以接受它,将问题标记为已回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 2012-11-26
  • 2012-06-01
  • 1970-01-01
  • 2014-12-02
相关资源
最近更新 更多