C++ 如何在boost正则表达式搜索中获取原始字符串前缀
我在boost中使用regex_搜索,如下所示: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表达式之前的原始字符串。 这怎么可能? 提前感谢…以下功能应该可以正常工
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}
请随意单击答案旁边的复选标记接受它,将问题标记为已回答。