Che Posted December 31, 2014 Report Posted December 31, 2014 Vreau sa folosesc o expresie in C++ care sa preia un text (numere, cifre, - si _) dintr-un tabel html gen: <td>text</text> <td>text</text> <td>text</text> <td>text</text> <td>text</text> <td>text</text> <td>text</text> <td>text</text> <td>text</text>Nu resuesc sa-l fac sa mearga. I-am faut debug si se pare ca expresia in regex nu-i in regula.Aici crapa: regex e("(?<=<td>).*?(?=<\/td>)"); Stie cineva cum trebuie scrisa ?Multumesc !Un An Nou Fericit !Sarbatori Fericite ! Quote
Active Members MrGrj Posted December 31, 2014 Active Members Report Posted December 31, 2014 Sau:<td.*?>(.*?)</td>It's the same shit. Quote
Che Posted December 31, 2014 Author Report Posted December 31, 2014 <td>(.*?)<\/td>Merge. Multumesc !Dar tu de unde stii ? Unde scrie ca expresia trebuia asa si nu asa cum am scris-o eu ? Cum ai transformat-o ca sa mearga ? @MrGrj La fel. ^ Quote
Active Members MrGrj Posted December 31, 2014 Active Members Report Posted December 31, 2014 (edited) O sa iti raspund eu daca Garry nu are nimic impotriva:In momentul in care lucrezi mult in C++(sau orice alt limbaj), si faci programe in care folosesti regex pe anumite pagini HTML + diferite API-uri ca sa ajungi la content-ul dorit, pur si simplu iti intra in reflex.Dupa ce ajungi sa lucrezi mai mult, vei vedea ca o sa fie mai usor. Ce ai facut tu acolo nu e tocmai ok din punct de vedere structural si functional.// Edit: Nici eu nu sunt as in regex, dar invat ceva nou in fiecare zi<td.*?> - asta inseamna ca ia tag-ul td cu tot ce mai are in el. Exemplu: <td class="ex">din cate poti observa .* marcheaza faptul ca exista ceva acolo, iar ? Match the preceding expression zero or one time.(.*?) - tot ce este intre cele doua taguri <td>// @GarryOne iti poate explica mai bine Edited December 31, 2014 by MrGrj Quote
Che Posted December 31, 2014 Author Report Posted December 31, 2014 @MrGrj1. Cum faci ca expresia sa mearga pana la sfarsitul randului ca daca ii dau ca input de exemplu mai multe unitati de astea:<td>text</text> <td>text</text> <td>text</text> <td>text</text>mi-o ia doar pe prima si afiseaza text si atat ? Cum fac sa afiseze text de atatea ori cat este pe acel rand ?2. Dar daca sunt mai multe randuri, sa zicem un tabel, cum faci ca sa ia toate randurile ?3. Dar ca sa ia toate randurile sa le bage intr-o matrice a[n] pe fiecare ? Trebuie cu for loop sau se poate din prima ? Quote
Che Posted December 31, 2014 Author Report Posted December 31, 2014 (edited) O sa iti raspund eu daca Garry nu are nimic impotriva:In momentul in care lucrezi mult in C++(sau orice alt limbaj), si faci programe in care folosesti regex pe anumite pagini HTML + diferite API-uri ca sa ajungi la content-ul dorit, pur si simplu iti intra in reflex.Dupa ce ajungi sa lucrezi mai mult, vei vedea ca o sa fie mai usor. Ce ai facut tu acolo nu e tocmai ok din punct de vedere structural si functional.// Edit: Nici eu nu sunt as in regex, dar invat ceva nou in fiecare zi<td.*?> - asta inseamna ca ia tag-ul td cu tot ce mai are in el. Exemplu: <td class="ex">din cate poti observa .* marcheaza faptul ca exista ceva acolo, iar ? (.*?) - tot ce este intre cele doua taguri <td>// @GarryOne iti poate explica mai bine Da, stiu, dar din punct de vedere al limbajului regex nici asta a mea nu e gresita: (?<=<td>).*?(?=<\/td>)Practic ia ce se afla intre cele doua taguri <td></td>. Am testat-o aici si merge: https://regex101.com/Insa in C++ nu merge. Eu asta te intrebam, de unde stii care anume merge si care nu merge in C++ ? Ca spre exemplu, aici: https://regex101.com/ are doar pentru js si python. Este si vreun tester de asta ptr. C++ ? Care ?LE: Acum am observat ca e dublu post. Am incercat sa-l sterg si sa le unesc dar nu merge. Scuze. Edited December 31, 2014 by Che Quote
H3xoR Posted January 1, 2015 Report Posted January 1, 2015 Da, stiu, dar din punct de vedere al limbajului regex nici asta a mea nu e gresita: (?<=<td>).*?(?=<\/td>)Practic ia ce se afla intre cele doua taguri <td></td>. Am testat-o aici si merge: https://regex101.com/Insa in C++ nu merge. Eu asta te intrebam, de unde stii care anume merge si care nu merge in C++ ? Ca spre exemplu, aici: https://regex101.com/ are doar pentru js si python. Este si vreun tester de asta ptr. C++ ? Care ?LE: Acum am observat ca e dublu post. Am incercat sa-l sterg si sa le unesc dar nu merge. Scuze.Î?i voi r?spunde eu la întrebare dar mai întâi spune-mi ce compilator folose?ti. Quote
Che Posted January 1, 2015 Author Report Posted January 1, 2015 Î?i voi r?spunde eu la întrebare dar mai întâi spune-mi ce compilator folose?ti.Visual Studio C++ 2013. Am mai folosit si CodeBlocks dar am renuntat la el. Acum folosesc doar MS Visual Studio C++ 2013, mi se pare cel mai bun. Quote
H3xoR Posted January 1, 2015 Report Posted January 1, 2015 Visual Studio C++ 2013. Am mai folosit si CodeBlocks dar am renuntat la el. Acum folosesc doar MS Visual Studio C++ 2013, mi se pare cel mai bun.Super.Cite?te asta ?i vei în?elege de ce nu merge respectivul regex.PS: JS e la fel. Quote