0

计划开发一个使用 boost 和 regex 来提取字符串中的键值对的实用程序。

示例输入字符串可能如下

旅行:1.5,汽车保险:3.25

提取后应该是这样的

旅行 1.5

汽车保险 3.25

有以下代码,但不知何故这似乎没有按预期工作

 std::map<std::string, std::string> pairs;
  boost::regex re("(?:(.*?):(.*?),)*(?:(.*?):(.*?))$"); // key - value pair

  // read lines from stdin; populate map
  boost::sregex_iterator it(str.begin(), str.end(), re), end;
  for ( ; it != end; ++it){
      pairs[(*it)[1]] = (*it)[2];
  }
4

1 回答 1

0

这真的不应该那么困难。您已经有了大部分答案,只是处理最后一个逗号的问题。(:,|$)应该工作得很好。

(?:([^:]+):([^,]+)(?:,|$))+

于 2012-09-18T20:20:11.157 回答