#include <iostream>
#include <regex>
#include <vector>
int main() {
std::regex rx(R"(^([+-]?(?:[[:d:]]+\.?|[[:d:]]*\.[[:d:]]+))(?:[Ee][+-]?[[:d:]]+)?$)");
std::vector<std::string> v({{
"1", "0", "10",
"1000.1", "+1",
"+10", "-10", "1.",
".1", "1.1", "+1.",
"-1.", "+.1", "-.1",
"009", "+009", "-009",
"-01e0", "+01E0", "+1e-1",
"+1e+1", "+1.e1", "1E1",
"1E+1", "0.001e-12", "0.111111111111111",
".", "1a", "++1",
"+-1", "+", "-.",
"-", "--1.", "1.e.1",
"1e.1", "0+.e0"
}});
for (int i = 0; i < v.size(); ++i) {
std::cout << (std::regex_match(v[i], rx) ? "matched: " : "not matched: ")
<< v[i] << std::endl;
}
// std::regex rx2(R"(^[[:alpha:]][[:alnum:]]*$)");
// std::string s("ыwwe3");
// if (std::regex_match(s, rx2)) {
// std::cout << "var object matched\n";
// }
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmVnZXg+CiNpbmNsdWRlIDx2ZWN0b3I+CgppbnQgbWFpbigpIHsKCXN0ZDo6cmVnZXggcngoUiIoXihbKy1dPyg/OltbOmQ6XV0rXC4/fFtbOmQ6XV0qXC5bWzpkOl1dKykpKD86W0VlXVsrLV0/W1s6ZDpdXSspPyQpIik7CglzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdih7ewoJCSIxIiwgIjAiLCAiMTAiLAoJCSIxMDAwLjEiLCAiKzEiLAoJCSIrMTAiLCAiLTEwIiwgIjEuIiwKCQkiLjEiLCAiMS4xIiwgIisxLiIsCgkJIi0xLiIsICIrLjEiLCAiLS4xIiwKCQkiMDA5IiwgIiswMDkiLCAiLTAwOSIsCgkJIi0wMWUwIiwgIiswMUUwIiwgIisxZS0xIiwKCQkiKzFlKzEiLCAiKzEuZTEiLCAiMUUxIiwKCQkiMUUrMSIsICIwLjAwMWUtMTIiLCAiMC4xMTExMTExMTExMTExMTEiLCAKCQkiLiIsICIxYSIsICIrKzEiLAoJCSIrLTEiLCAiKyIsICItLiIsCgkJIi0iLCAiLS0xLiIsICIxLmUuMSIsCgkJIjFlLjEiLCAiMCsuZTAiCgl9fSk7Cglmb3IgKGludCBpID0gMDsgaSA8IHYuc2l6ZSgpOyArK2kpIHsKCQlzdGQ6OmNvdXQgPDwgKHN0ZDo6cmVnZXhfbWF0Y2godltpXSwgcngpID8gIm1hdGNoZWQ6ICIgOiAibm90IG1hdGNoZWQ6ICIpCgkJCTw8IHZbaV0gPDwgc3RkOjplbmRsOyAKCX0KCQogICAgLy8gc3RkOjpyZWdleCByeDIoUiIoXltbOmFscGhhOl1dW1s6YWxudW06XV0qJCkiKTsKICAgIC8vIHN0ZDo6c3RyaW5nIHMoItGLd3dlMyIpOwogICAgLy8gaWYgKHN0ZDo6cmVnZXhfbWF0Y2gocywgcngyKSkgewogICAgLy8gICAgIHN0ZDo6Y291dCA8PCAidmFyIG9iamVjdCBtYXRjaGVkXG4iOwogICAgLy8gfQoJcmV0dXJuIDA7Cn0=