我的应用程序下载HTML网页源代码,然后尝试exctract html lines(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次出现,但另一方面,他并没有分裂这个字符串。
答案 0 :(得分:0)
问题是你的正则表达式。它会尝试将以<tr
个结尾开头的字符串与>
匹配。它会查找该字符串的最长的外观。在您的情况下,它将从第一个<tr
开始,一直到文档结尾(因为HTML以>
结尾)。
要避免这种情况,请使用:<tr[^>]*>
。这样它只会匹配<tr ...>
,因为除了>
之外的任何字符串都允许。
尝试使用https://regex101.com/#pcre之类的网站来验证和测试正则表达式!