QString :: split(const QRegularExpression)问题

时间:2015-11-19 17:26:33

标签: regex qt qregularexpression

我的应用程序下载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次出现,但另一方面,他并没有分裂这个字符串。

1 个答案:

答案 0 :(得分:0)

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

要避免这种情况,请使用:<tr[^>]*>。这样它只会匹配<tr ...>,因为除了>之外的任何字符串都允许。

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