QRegExp problem z odczytem linijki html

0

Problem polega na tym ,że w kodzie który powinien działać dla obu linijek html działa odpowiednio tylko dla jednej a gdy sprawdzam na regexr.com to działa odpowiednio dla obu.
linia[0]=\nd class="red">-2,10</td>72.99</td>70.82</
i tutaj jako wynik zwraca mi samo "10" zamiast -2,10


QRegExp re("...............([a-z,A-Z\\>""=]+)([-+,0-9]+)<.td><td>[.0-9<\/a-z<>]+");
             QString str=linia[0];

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

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

             int dlugosc5=list.size();
         
             for(int i=0;i<dlugosc5;i++)
             {
                 if(list[i]==',')
                 {
                     list[i]='.';
                 }
             }
             wynik=list;







Drugi kod:

QRegExp re("...............([a-z,A-Z\\>""=]+)([-+,.0-9]+)<.td><td>[.0-9<\/a-z<>]+..........");
        QString str=linia[1];

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

        while((pos=re.indexIn(str, pos))!=-1){
            list=list+re.cap(2);
         
            pos+=re.matchedLength();
        }
        int dlugosc5=list.size();
        for(int i=0;i<dlugosc5;i++)
        {
            if(list[i]==',')
            {
                list[i]='.';
            }
        }
        wynik2=list;

Wygląda tak samo tylko ,że podana jest linia[1] a zamiast wynik jest wynik2
linia[1]=><td class="green">+0,20</td>54.9</td>54
I tutaj ładnie wynik2 zwraca +0,20 tak jak powinno być

W czym jest problem czemu kod1 zwraca mi tylko "10" zamiast -2,10?

0

Niepoprawnie escape'ujesz " i \

cout << "a""b";

To wypisze ab

Użyj raw string literali:

R"(...............([a-z,A-Z\>""=]+)([-+,.0-9]+)<.td><td>[.0-9<\/a-z<>]+..........)"

PS: wiesz, że powtarzanie znaku/sekwencji w regeksie można uzyskać za pomocą {}?

1 użytkowników online, w tym zalogowanych: 0, gości: 1