【发布时间】:2017-08-09 20:36:14
【问题描述】:
我查看了前面的问题以找到查找浮点值的最佳方法。我的问题是我有一行应该包含至少 3 个浮点值以及一些其他文本。我想从该行中提取前三个浮点值并使用它们。但是,我只能让 boost::regex 给我第一个值。我究竟做错了什么?我确实想在小数点的每一侧强制至少有一个数字,并强制小数点也必须存在。
我的示例输入字符串是
"this is a name" 39.789876 -83.997978 30.000000
我的代码看起来像
std::string line = "\"this is a name\" 39.789876 -83.997978 30.000000";
static boost::regex llhNums_regex = boost::regex("[-]?[0-9]+[.][0-9]+");
boost::smatch resultsTwo;
if(boost::regex_search(line, resultsTwo, llhNums_regex))
{
std::cout << "Found results\n";
}
for(int i = 0 ; i<resultsTwo.size() ; ++i)
{
std::cerr << i << ": " << resultsTwo[i].str() << std::endl;
}
然而resultsTwo.size() 只是 1,它只打印出第一个浮点值。如何获取所有三个值?我确信我误解了正则表达式的一些基本内容,但我无法弄清楚。
【问题讨论】:
-
要直接回答正则表达式问题:stackoverflow.com/questions/3122344/…