首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QRegExp html行

QRegExp html行
EN

Stack Overflow用户
提问于 2017-04-16 19:20:20
回答 2查看 71关注 0票数 1

我对QRegExp课程没有任何问题,但现在我有了一个。我的密码

代码语言:javascript
复制
QRegExp re("d class=\\.green\\.>([+,0-9]+)<.td><td>[.0-9]+<.td><td>[.0-9]+<..n");
QString str=AliorLinia;

qDebug()<<str;
QStringList list;
int pos=0;

while((pos=re.indexIn(str, pos))!=-1){
    list << re.cap(1);
    pos+=re.matchedLength();
}

qDebug()<<list;

控制台给我看

,str线在屏幕上。

控制台应该显示+0,10,但它只显示()为什么:(?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-16 20:57:38

您没有得到匹配,因为真正的文字字符串看起来像

代码语言:javascript
复制
d class="green">+0.10</td><td>69.7</td><td>69.0</
<NEWLINE>

您在调试器中看到的\"\n只是告诉您字符串文字包含一个文字双引号和一个换行符(十进制代码为10的字符)。

此外,您的数字包含一个.,而不是,作为小数分隔符,因此必须将它添加到[+,0-9]字符类中。

因此,您的正则表达式只要进行最小的修改,就可以像

代码语言:javascript
复制
QRegExp re("d class=.green.>([+.,0-9]+)<.td><td>[.0-9]+<.td><td>[.0-9]+<.\n");

请参阅regex演示

票数 1
EN

Stack Overflow用户

发布于 2017-04-16 19:27:58

因为regex模式要求green属性被圆点所包围--这就是\\.在引用字符串中的意思。

您真正想要的正则表达式是\\. (即反斜杠后面跟着任何字符),这是正确的。但是在C字符串文本中,这两个反斜杠中的每一个都应该通过一个额外的斜杠来转义:

代码语言:javascript
复制
QRegExp re("d class=\\\\.green\\\\.>([+,0-9]+)<.td><td>[.0-9]+<.td><td>[.0-9]+<..n");
                    ^ ^       ^ ^
                 add these backslashes
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43441129

复制
相关文章

相似问题

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