0

我最近编写了正则表达式来解析我的文件中的内容,但那个是在 .NET 中的,我现在刚刚开始在我的 C++ 项目中使用 Boost。

我有一个类似于以下的行,它是一个 std::string
123 12 E

我必须解析并获得以下内容。

float = 第一个数字
float = 第二个数字
string = 第三个字母

因为我有使用正则表达式的经验,所以我知道正则表达式是什么

const char* Regex = "^[[:space:]]*(\\d{1,3})[[:space:]]*(\\d{1,2})[[:space:]]*([NSEW])[[:space:]]*"

但我不确定如何使用它与 boost 一起从我的行中提取这三样东西。我尝试阅读 Boost 网站上的示例,但这似乎并没有回答我的问题,因为我必须陷入困境才能找到这个小细节。如何将 Boost Regex 与上述正则表达式一起使用以将我的结果输出为三个变量?

4

1 回答 1

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;
    }
于 2013-01-07T15:43:59.350 回答