我对 QRegExp 类没有任何问题,但现在我有了一个。 我的代码
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 但它只显示 () 为什么 :(?
最佳答案
你没有得到匹配,因为你真正的文字字符串看起来像
d class="green">+0.10</td><td>69.7</td><td>69.0</
<NEWLINE>
您在调试器中看到的 \"
和 \n
只是告诉您 string literal 包含文字双引号和换行符符号(十进制代码为 10 的字符)。
此外,您的号码包含一个 .
,而不是 ,
作为小数分隔符,因此您必须将其添加到 [+,0-9]
字符类。
因此,经过最少修改的正则表达式看起来像
QRegExp re("d class=.green.>([+.,0-9]+)<.td><td>[.0-9]+<.td><td>[.0-9]+<.\n");
关于c++ - QRegExp html行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43441129/