Che Posted December 16, 2014 Report Posted December 16, 2014 Va rog sa ma ajutati si pe mine cu urmatoarele chestii, daca se poate:1. Cum faci sa iei un sir de caractere care se aflat DUPA un anume caracter sa zicem Z ?2. Cum faci sa iei un sir de caractere care se aflat INAINTE de un anume caracter sa zicem Z ?3. Cum faci sa iei un sir de caractere care se afla INTRE alte doua caractere, sa zicem intre Z si Y ?4. Cum faci sa iei un sir de caractere care se afla INTRE alte doua caractere, sa zicem intre Z si Y, dar doar care contine printre caractere si caracterul M ?5. Cum faci sa iei un sir de caractere care se afla INTRE alte doua caractere, sa zicem intre Z si Y, dar doar care NU contine printre caractere si caracterul M ?6. Sa zicem ca ai o structura de genul:<caracter A1>"rosu"</caracter A1> //external node 1<caracter A1>"alb"</caracter A1> //external node 2<caracter A1>"violet"</caracter A1> //external node 3<caracter A1>"crem"</caracter A1> //external node 4<caracter A1> //external node 5 "albastru" <caracter A1> //internal node 1 "verde" <caracter A1> //internal node 2 "maro" <caracter A1> //internal node 3 "galben" </caracter A1> </caracter A1> </caracter A1></caracter A1>Dupa cum se vede, avem o structura formata din noduri care au aceleasi delimitari absolut toate <caracter A1> si </caracter A1>.Doar textul e diferit, insa textul poate fi si la fel in mai multe din noduri.Cum faci cu regex sa iei exact textul dintr-un anume nod, fara a te lega de acel text in sine (fiindca textul poate fi la fel in mai multe noduri sau se poate schimba, sa fie dinamic) ci sa faci cumva sa te duci exact la nodul respectiv, ceva gen external node 1 => chars sau external node 5 => internal node 2 =>chars (adica "maro") ?Multumesc mult de tot ! Quote
Erase Posted December 17, 2014 Report Posted December 17, 2014 Daca nu citesti acest capitol nu ai cum sa intelegi.1. "^[z].+$" Nu-ti voi raspunde la toate intrebarile pentru ca altii platesc pentru asa ceva si in alta ordine de idei nu vad nici o implicare din partea ta.Ai pus doar intrebari, n-ai postat ce ai incercat si nu ti-a functionat si probabil vrei mura-n gura.Daca sunt rautacios sau nu decideti voi, insa pe alte forumuri nu se scriu raspunsurile fara sa existe un punct de plecare din partea celui care e interesat tocmai ca sa incurajeze invatatul.Poti incepe de aici. Quote
Eminemu Posted December 17, 2014 Report Posted December 17, 2014 Salut, Che,Toate punctele se rezolva cu lookaround, mai exact lookahead si lookbehind. Cele doua sunt grupuri de captura care nu se vor reflecta in string-ul returnat de executia regex-ului.Inainte de a te chinui cu scrierea regex-urilor, verifica daca limbajul in care le folosesti accepta lookbehind (de exemplu, javascript-ul nu il suporta).Un exemplu, pentru punctul 2:String1: Ana are mere.String2: Ana are pere.Patter (cine are mere?): /.*(?= are mere\.)/Aplicat string-ului 1: AnaAplicat string-ului 2: nullAtat lookahead, cat si lookbehind, pot fi positive (=) sau negative (!). In exemplul de mai sus am folosit positive lookahead.Mai multe informatii despre lookaround gasesti si aici: Regex Tutorial - Lookahead and Lookbehind Zero-Length AssertionsHope it helps.Zi buna. Quote
Che Posted December 17, 2014 Author Report Posted December 17, 2014 (edited) Salut, Che,Toate punctele se rezolva cu lookaround, mai exact lookahead si lookbehind. Cele doua sunt grupuri de captura care nu se vor reflecta in string-ul returnat de executia regex-ului.Inainte de a te chinui cu scrierea regex-urilor, verifica daca limbajul in care le folosesti accepta lookbehind (de exemplu, javascript-ul nu il suporta).Un exemplu, pentru punctul 2:String1: Ana are mere.String2: Ana are pere.Patter (cine are mere?): /.*(?= are mere\.)/Aplicat string-ului 1: AnaAplicat string-ului 2: nullAtat lookahead, cat si lookbehind, pot fi positive (=) sau negative (!). In exemplul de mai sus am folosit positive lookahead.Mai multe informatii despre lookaround gasesti si aici: Regex Tutorial - Lookahead and Lookbehind Zero-Length AssertionsHope it helps.Zi buna.Multumesc !Dar la ultimul exemplu, la punctul 6, cum trebuie facut ?Multumesc mult !LE: Dar la punctul 4) cum faci ? Sa zicem ca sirul de caractere poate sa contina M o daat sau de mai multe ori, sau de un numar predefinit de ori, si e in pozitii aleatorii gen char char M si apoi char char char char MMMMMM char char etc.Multumesc din nou ! @Eminemu Edited December 17, 2014 by Che Quote