C++ 如何在boost正则表达式搜索中获取原始字符串前缀

C++ 如何在boost正则表达式搜索中获取原始字符串前缀,c++,regex,search,boost,C++,Regex,Search,Boost,我在boost中使用regex_搜索,如下所示: std::string symbol = "abcd1234"; boost::regex regExpr("(\\d{4})", boost::regex::icase); boost::smatch regMatch; boost::regex_search(symbol, regMatch, regExpr); 我需要得到的是:“abcd”,即第一个匹配的reg表达式之前的原始字符串。 这怎么可能? 提前感谢…以下功能应该可以正常工

我在boost中使用regex_搜索,如下所示:

std::string symbol = "abcd1234";

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

boost::smatch regMatch;

boost::regex_search(symbol, regMatch, regExpr);
我需要得到的是:“abcd”,即第一个匹配的reg表达式之前的原始字符串。 这怎么可能?
提前感谢…

以下功能应该可以正常工作:

^(.*?)\\d{4}
说明:

^
-字符串的开头
-通配符
*?
-零个或多个(
*
)通配符(
),非贪婪地匹配(
),因此您会得到第一个匹配,而不是最后一个

因此,您可以匹配从字符串开始到数字的所有内容

使用boost功能的替代方案:


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

假设字符串后面始终有4位数字:
(\\D*)\D{4}
请随意单击答案旁边的复选标记接受它,将问题标记为已回答。