我最近编写了正则表达式来解析我的文件中的副本,但是那个是在.NET中,我现在开始使用Boost进行我的C ++项目。
我有一条类似于以下的行,它是一个std :: string
123 12 E
我必须解析并获得以下内容。
float =第一个数字
float =第二位数字
string =第三个字母
由于我有使用正则表达式的经验,我知道正则表达式是什么
const char* Regex = "^[[:space:]]*(\\d{1,3})[[:space:]]*(\\d{1,2})[[:space:]]*([NSEW])[[:space:]]*"
但我不知道如何使用它来提升从我的行中提取三件事。我尝试在Boost网站上阅读示例,但似乎没有回答我的问题,因为我不得不陷入困境才能找到这个小细节。如何使用上面的正则表达式将Boost Regex用于三个变量?
答案 0 :(得分:1)
http://www.boost.org/doc/libs/1_52_0/libs/regex/doc/html/boost_regex/introduction_and_overview.html给出了匹配的示例。你最终得到一个match_results
结构,你可以从中获得匹配。
未经测试的代码
const char *str = "123 12 E";
boost::regex re ("^(\\d{1,3}) (\\d{1,2}) ([NSEW])$");
boost::cmatch mr;
if (boost::regex_match ( str, mr, re )) {
std::cout << "There were: " << mr.size () - 1 << " fields matched" << std::endl;
std::cout << "First part: " << mr[1] << std::endl;
}