регулярные выражения , время

программа выводит не самую длинную часть , то есть пример (14:45 am) - будет выведено 14:45, а не 4:45 am

#include <string>
#include <iostream>
#include <cmath>
#include <regex>
using namespace std;

int main() {


freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);


    string s;
    while (getline(cin, s)) {
        smatch result;
        regex regular(

"((1[0-2]|0?[1-9]):([0-5][0-9]) ([AaPp][Mm]))|((0[0-9]|1[0-9]|2[0-3]):[0-5][0-9])"

        );
        while (regex_search(s, result, regular)) {
            cout << result.str() << endl;
            s = result.suffix().str();
        }




    }

    return 0;
}

Ответы (0 шт):