2017-03-25 67 views
0

時間([0-9:] +)(我?) - ?這種模式找到所有文字 - 時間= 00:00:00.00QRegularExpression如何,我可以得到最後的匹配字

我怎樣才能獲得最後的匹配元素(時間= 00:05:01.84)在第一或第二文本

第一文本:

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% 

第二文本:

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% 

回答

1

爲了得到最後的與QRegularExpression匹配的元素,你可以使用global match獲得QRegularExpressionMatchIterator並遍歷到最後一個元素:

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{}; 
} 

或者,你可以使用QString::lastIndexOfQRegularExpression獲得最後一場比賽:

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