首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QString::split(const QRegularExpression)发行

QString::split(const QRegularExpression)发行
EN

Stack Overflow用户
提问于 2015-11-19 17:26:33
回答 1查看 604关注 0票数 0

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

代码语言:javascript
复制
QStringList linesPage1 = page1.split(QRegularExpression("<tr.*>"));

但当我这么做的时候

代码语言:javascript
复制
qDebug() << linesPage1;

我拿到了这个:

代码语言:javascript
复制
("<table width=\"1085\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">", "")

当我尝试这个代码时,他发现发生了31次:

代码语言:javascript
复制
qDebug() << page1.count(QRegularExpression("<tr.*>"));

我不明白他为什么数到31次,但另一方面,他没有分裂绳子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-19 18:35:07

问题在于你的正则表达式。它试图匹配以<tr结尾以>结尾的字符串。它将寻找该字符串中最长的姑息性。在您的示例中,它将从第一个<tr开始,一直到文档的末尾(因为HTML以>结尾)。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33810492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档