fork download
  1. #include <iostream>
  2. #include <regex>
  3. using namespace std;
  4.  
  5. int main() {
  6. std::vector<std::string> strings;
  7. strings.push_back("1.200e+12");
  8. strings.push_back("1.0200e+12");
  9. strings.push_back("1.0000e+12");
  10. strings.push_back("1.0e+12");
  11. strings.push_back("1.e+12");
  12. strings.push_back("100e");
  13. strings.push_back("100e+12");
  14. std::regex reg(R"((\d*)(?:(?=[.]0*e)[.]0*|(?![.]0+e)([.][0-9]*?)0*)(e(?:[+]\d+)?))");
  15. for (size_t k = 0; k < strings.size(); k++)
  16. {
  17. std::cout << "Next string: " << strings[k] << std::endl;
  18. std::cout << "Replace result: "
  19. << std::regex_replace(strings[k], reg, "$1$2$3") << std::endl;
  20. }
  21. return 0;
  22. }
Success #stdin #stdout 0s 3504KB
stdin
Standard input is empty
stdout
Next string: 1.200e+12
Replace result: 1.2e+12
Next string: 1.0200e+12
Replace result: 1.02e+12
Next string: 1.0000e+12
Replace result: 1e+12
Next string: 1.0e+12
Replace result: 1e+12
Next string: 1.e+12
Replace result: 1e+12
Next string: 100e
Replace result: 100e
Next string: 100e+12
Replace result: 100e+12