我正在下载网页,我正在尝试从中提取一些值。
我感兴趣的页面位置属于这种类型:
<a data-track=\"something\" href=\"someurl\" title=\"Heaven\"><img src=\"somesource.jpg\" /></a>
我需要提取href(someurl)值。请注意,我在HTML字符串中有多个条目,如上所示,因此我将使用列表来存储从字符串中提取的所有URL。
这是我到目前为止所尝试的:
QString html_str=myfile();
QRegExp regex("<a data-track\\=\"something\" href\\=\".*(?=\" title)");
if(regex.indexIn(html_str) != -1){
QStringList list;
QString str;
list = regex.capturedTexts();
foreach(str,list)
qDebug() << str.remove("<a data-track=\"something\" href=\"");
}
使用上面的代码,我只得到一次出现(list.count() == 1
),其中包含从第一次出现someurl
到文件末尾的整个HTML字符串,而不包含<a data-track="something" href=""
它已被删除。
答案 0 :(得分:0)
我会这样做:(确保你仔细检查你的正则表达式)
QRegExp regex("<a data-track=\"something\" href=\".*(?=\" title)");
if (regex.indexIn(html_str) != -1) qDebug() << html_str.cap().remove(<a data-track=\"something\" href=\");
答案 1 :(得分:0)
您可以使用while循环来控制“html_str”的位置
pos = regex.indexIn(htmlContent); // get the first position
while(pos = regex.indexIn(htmlContent, pos) != -1){ // continue next
QStringList list;
list = regex.capturedTexts();
foreach(QString url, list) {
// do something
}
pos += regex.matchedLength();
}