0

我的应用程序下载 HTML 网页源代码,然后尝试提取 html 行 (tr)。我的代码:

QStringList linesPage1 = page1.split(QRegularExpression("<tr.*>"));

但是当我这样做时:

qDebug() << linesPage1;

我懂了:

("<table width=\"1085\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">", "")

当我尝试这段代码时,他发现 31 次出现:

qDebug() << page1.count(QRegularExpression("<tr.*>"));

我不明白他为什么要计算 31 次出现,但另一方面,他没有拆分字符串。

4

1 回答 1

0

问题是你的正则表达式。它尝试匹配以<trend 结尾的字符串>。它会寻找该字符串最长的外观。在您的情况下,它将从第一个开始<tr并一直到文档的末尾(因为 HTML 以 结尾>)。

为避免这种情况,请使用:<tr[^>]*>。这样它只会匹配<tr ...>, 因为除了 of 之外的任何字符串都>可以在两者之间。

尝试使用像https://regex101.com/#pcre这样的网站来验证和测试你的正则表达式!

于 2015-11-19T18:35:07.093 回答