#include <string>
#include <iostream>
#include <regex>
using namespace std;
int main() {
std::regex r(R"([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)");
std::string s = "3 5 8 2.14 33 / * + = e pi";
for(std::sregex_iterator i = std::sregex_iterator(s.begin(), s.end(), r);
i != std::sregex_iterator();
++i)
{
std::smatch m = *i;
std::cout << m.str() << std::endl;
}
return 0;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmVnZXg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCXN0ZDo6cmVnZXggcihSIihbLStdP1xkKlwuP1xkKyg/OltlRV1bLStdP1xkKyk/KSIpOwoJc3RkOjpzdHJpbmcgcyA9ICIzIDUgOCAyLjE0IDMzIC8gKiArID0gZSBwaSI7Cglmb3Ioc3RkOjpzcmVnZXhfaXRlcmF0b3IgaSA9IHN0ZDo6c3JlZ2V4X2l0ZXJhdG9yKHMuYmVnaW4oKSwgcy5lbmQoKSwgcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSAhPSBzdGQ6OnNyZWdleF9pdGVyYXRvcigpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICsraSkKICAgIHsKICAgICAgICBzdGQ6OnNtYXRjaCBtID0gKmk7CiAgICAgICAgc3RkOjpjb3V0IDw8IG0uc3RyKCkgPDwgc3RkOjplbmRsOwogICAgfQoJcmV0dXJuIDA7Cn0K