#include <iostream>
#include <regex>
using namespace std;
int main() {
std::vector<std::string> strings;
strings.push_back("1.200e+12");
strings.push_back("1.0200e+12");
strings.push_back("1.0000e+12");
strings.push_back("1.0e+12");
strings.push_back("1.e+12");
strings.push_back("100e");
strings.push_back("100e+12");
std::regex reg(R"((\d*)(?:(?=[.]0*e)[.]0*|(?![.]0+e)([.][0-9]*?)0*)(e(?:[+]\d+)?))");
for (size_t k = 0; k < strings.size(); k++)
{
std::cout << "Next string: " << strings[k] << std::endl;
std::cout << "Replace result: "
<< std::regex_replace(strings[k], reg, "$1$2$3") << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmVnZXg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCXN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBzdHJpbmdzOwoJc3RyaW5ncy5wdXNoX2JhY2soIjEuMjAwZSsxMiIpOwoJc3RyaW5ncy5wdXNoX2JhY2soIjEuMDIwMGUrMTIiKTsKCXN0cmluZ3MucHVzaF9iYWNrKCIxLjAwMDBlKzEyIik7CglzdHJpbmdzLnB1c2hfYmFjaygiMS4wZSsxMiIpOwoJc3RyaW5ncy5wdXNoX2JhY2soIjEuZSsxMiIpOwoJc3RyaW5ncy5wdXNoX2JhY2soIjEwMGUiKTsKCXN0cmluZ3MucHVzaF9iYWNrKCIxMDBlKzEyIik7CglzdGQ6OnJlZ2V4IHJlZyhSIigoXGQqKSg/Oig/PVsuXTAqZSlbLl0wKnwoPyFbLl0wK2UpKFsuXVswLTldKj8pMCopKGUoPzpbK11cZCspPykpIik7Cglmb3IgKHNpemVfdCBrID0gMDsgayA8IHN0cmluZ3Muc2l6ZSgpOyBrKyspCgl7CgkJc3RkOjpjb3V0IDw8ICJOZXh0IHN0cmluZzogIiA8PCBzdHJpbmdzW2tdIDw8IHN0ZDo6ZW5kbDsKCQlzdGQ6OmNvdXQgPDwgIlJlcGxhY2UgcmVzdWx0OiAiIAoJCSAgICAgICAgICAgICA8PCBzdGQ6OnJlZ2V4X3JlcGxhY2Uoc3RyaW5nc1trXSwgcmVnLCAiJDEkMiQzIikgPDwgc3RkOjplbmRsOwoJfQoJcmV0dXJuIDA7Cn0=