我的应用程序下载一个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次,但另一方面,他没有分裂绳子。
发布于 2015-11-19 18:35:07
问题在于你的正则表达式。它试图匹配以<tr结尾以>结尾的字符串。它将寻找该字符串中最长的姑息性。在您的示例中,它将从第一个<tr开始,一直到文档的末尾(因为HTML以>结尾)。
要避免这种情况,请使用:<tr[^>]*>。这样,它将只与<tr ...>匹配,因为除>之外的任何字符串都允许在两者之间。
尝试使用像https://regex101.com/#pcre这样的webistes来验证和测试正则表达式!
https://stackoverflow.com/questions/33810492
复制相似问题