使用QRegularExpression从字符串中提取URL

时间:2018-12-19 17:42:37

标签: c++ regex qt qregularexpression

我有一个如下所示的字符串:

on prepareFrame
  go to frame 10
    goToNetPage "http://www.apple.com"
    goToNetPage "http://www.cnn.com"
    etc..
end 

我想使用QRegularExpression从此字符串中提取所有URL。我已经尝试过:

QRegularExpression regExp("goToNetPage \"\\w+\"");
QRegularExpressionMatchIterator i = regExp.globalMatch(handler);
while (i.hasNext()) {
    QRegularExpressionMatch match = i.next();
    QString handler = match.captured(0);
}

但这不起作用。

1 个答案:

答案 0 :(得分:1)

您可以使用

QRegExp regExp("goToNetPage\\s*\"([^\"]+)");
QStringList MyList;
int pos = 0;

while ((pos = regExp.indexIn(handler, pos)) != -1) {
    MyList << regExp.cap(1);
    pos += regExp.matchedLength();
}

模式是

goToNetPage\s*"([^"]+)

它与goToNetPage,0个或多个空格字符,"匹配,然后将除"以外的任意1个以上的字符捕获到组1中-使用{{1}访问所需的值}。