Jump to content
Che

Ajutor cu niste chestii in regex

Recommended Posts

Posted

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 !

Posted

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.

Posted

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: Ana

Aplicat string-ului 2: null

Atat 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 Assertions

Hope it helps.

Zi buna.

Posted (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: Ana

Aplicat string-ului 2: null

Atat 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 Assertions

Hope 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 by Che

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...