#include #include #include auto date_to_yyyymmdd(std::string text0) { auto rex1 = R"((\d{1,2})(\.\s|[\.|/|\-])(\d{1,2})(\.\s|[\.|/|\-])(\d{4}))"; auto fmt1 = "$5-$3-$1"; auto rex2 = R"((\d{4})-(\d{1})-(\d{1,2}))"; auto fmt2 = "$1-0$2-$3"; auto rex3 = R"((\d{4})-(\d{2})-(\d{1})($|\D))"; auto fmt3 = "$1-$2-0$3$4"; auto text1 = std::regex_replace(text0, std::regex{rex1}, fmt1); // order by y-m-d auto text2 = std::regex_replace(text1, std::regex{rex2}, fmt2); // add starting zero, if one digit month auto text3 = std::regex_replace(text2, std::regex{rex3}, fmt3); // add starting zero, if one digit day return text3; } int main() { std::cout << date_to_yyyymmdd("Datum: 29. 03. 2019") << '\n' ; std::cout << date_to_yyyymmdd("Datum: 29. 3. 2019") << '\n' ; std::cout << date_to_yyyymmdd("Datum: 29.3.2019") << '\n' ; std::cout << date_to_yyyymmdd("Datum: 29.03.2019") << '\n' ; std::cout << date_to_yyyymmdd("Datum: 29-03-2019") << '\n' ; std::cout << date_to_yyyymmdd("Datum: 29/03/2019") << '\n' ; std::cout << date_to_yyyymmdd("Datum: 29/3/2019") << '\n' ; std::cout << date_to_yyyymmdd("Datum: 2. 3. 2019") << '\n' ; std::cout << date_to_yyyymmdd("Datum: 2.3.2019") << '\n' ; std::cout << date_to_yyyymmdd("Datum: 2-3-2019") << '\n' ; std::cout << date_to_yyyymmdd("Datum: 2/3/2019") << '\n' ; std::cout << date_to_yyyymmdd("Datum: 3/12/2019") << '\n' ; }