我想用boost::regex
一堆的格式19991231235959
日期的格式更改为这种格式1999-12-31_23:59:59
这样的:简单使用正则表达式提振比赛团体::
YYYYMMDDhhmmss --> YYYY-MM-DD_hh:mm:ss
19991231235959 --> 1999-12-31_23:59:59
我用这个
std::string input = "19991231235959";
boost::regex regex("^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})");
std::string format = "\\1-\\2-\\3_\\4:\\5:\\6";
std::string output = boost::regex_replace(input, regex, format);
哪些工作,但有没有办法摆脱重复([0-9]{2})
在regex
建设和保持匹配组?
你真的真的需要这个正则表达式吗? –
另外,如果你设置了'regex_constants :: escape_in_lists',你可以使用'\\ d'而不是'[0-9]'。 –
也许正则表达式不是最好的解决方案;我想这是一个练习。我首先考虑的是正则表达式的原因是可以从配置中读取'regex'和'format'字符串。 – Svaberg