2017-03-25 3 views
0

Zeit ([0-9:] +) (i?).? - dieses Muster alle Texte finden - Zeit = 00: 00: 00.00QRegularExpression, wie ich letzte Wort angepasst bekommen kann

Wie ich das letzte Mal bekommen Element abgestimmt (Zeit = 00: 05: 01.84) in der ersten oder zweiten Text

erster Text:

Metadata: 
     creation_time : 2013-11-21 11:03:11 
     handler_name : IsoMedia File Produced by Google, 5-11-2011 
Output #0, mp3, to 'ssdad.mp3': 
    Metadata: 
    major_brand  : mp42 
    minor_version : 0 
    compatible_brands: isommp42 
    TSSE   : Lavf54.63.104 
    Stream #0:0(und): Audio: mp3, 44100 Hz, stereo, fltp 
    Metadata: 
     creation_time : 2013-11-21 11:03:11 
     handler_name : IsoMedia File Produced by Google, 5-11-2011 
Stream mapping: 
    Stream #0:1 -> #0:0 (aac -> libmp3lame) 
Press [q] to stop, [?] for help 
size= 3779kB time=00:03:01.84 bitrate= 128.0kbits/s 
size= 3779kB time=00:04:01.84 bitrate= 128.0kbits/s 
size= 3779kB time=00:05:01.84 bitrate= 128.0kbits/s 
video:0kB audio:3779kB subtitle:0 global headers:0kB muxing overhead 0.008011% 

zweiten Text:

Metadata: 
     creation_time : 2013-11-21 11:03:11 
     handler_name : IsoMedia File Produced by Google, 5-11-2011 
Output #0, mp3, to 'ssdad.mp3': 
    Metadata: 
    major_brand  : mp42 
    minor_version : 0 
    compatible_brands: isommp42 
    TSSE   : Lavf54.63.104 
    Stream #0:0(und): Audio: mp3, 44100 Hz, stereo, fltp 
    Metadata: 
     creation_time : 2013-11-21 11:03:11 
     handler_name : IsoMedia File Produced by Google, 5-11-2011 
Stream mapping: 
    Stream #0:1 -> #0:0 (aac -> libmp3lame) 
Press [q] to stop, [?] for help 
size= 3779kB time=00:05:01.84 bitrate= 128.0kbits/s 
video:0kB audio:3779kB subtitle:0 global headers:0kB muxing overhead 0.008011% 

Antwort

1

Um die letzte zu erhalten verglichene Element mit QRegularExpression, können Sie global match verwenden, um eine QRegularExpressionMatchIterator und iterieren es auf das letzte Element zu erhalten:

QString getLastTime2(const QString &input) 
{ 
    auto match = QRegularExpressionMatch{}; 
    input.lastIndexOf(QRegularExpression { R"((?i)time.?([0-9:]+))" }, -1, &match); 
    return match.captured(0); 
} 
:

QString getLastTime(const QString &input) 
{ 
    auto re = QRegularExpression { R"((?i)time.?([0-9:]+))" }; 
    auto matchIterator = re.globalMatch(input); 
    while(matchIterator.hasNext()) 
    { 
     auto result = matchIterator.next(); 
     if (!matchIterator.hasNext()) 
     { 
      return result.captured(0); 
     } 
    } 
    return QString{}; 
} 

Alternativ Sie QString::lastIndexOf mit einem QRegularExpression zu bekommen das letzte Spiel verwenden können

Verwandte Themen