Help: regex

Nu asa. Vreau fiecare grup de cifre ca element separat.
In dreapta sa apara asa:
Group 1: 123
Group 2: 456
Group 3: 789
 
Asa am facut, dar din cauza ca in practica textul sursa este muuult mai complicat, a iesit asta:
Code:
preg_match('~\s*Round\s*Sample\s*xpt\s*Result\s*diff%\s*z-score(?:\r|\n)+\s*(\d\d.\d)\s*.*\s{2,}(\d+(?:\.\d+){0,1})\s{2,}(\d+(?:\.\d+){0,1})\s{2,}(?:-){0,1}(\d+(?:\.\d+){0,1}%)\s{2,}(?:-){0,1}(\d+(?:\.\d+){0,1})\s*(?:\r|\n)+\s*(\d\d.\d)\s*.*\s{2,}(\d+(?:\.\d+){0,1})\s{2,}(\d+(?:\.\d+){0,1})\s{2,}(?:-){0,1}(\d+(?:\.\d+){0,1}%)\s{2,}(?:-){0,1}(\d+(?:\.\d+){0,1})\s*(?:\r|\n)+\s*(\d\d.\d)\s*.*\s{2,}(\d+(?:\.\d+){0,1})\s{2,}(\d+(?:\.\d+){0,1})\s{2,}(?:-){0,1}(\d+(?:\.\d+){0,1}%)\s{2,}(?:-){0,1}(\d+(?:\.\d+){0,1})\s*~mi',$file,$match)
Dracu' l-o mai descifra data viitoare cand vor trebui modificari.
 
Acu' ai putea și tu să spargi string-ul în câteva (logice), pe care să le concatenezi când ai nevoie, nu să ții totul într-un șir indescifrabil. Mai ales pentru chestii repetabile.
 
Am nevoie de putin ajutor cu o expresie regulata.
Pe portul serial vine:
+039540P+039540P+039540P+039540P+039540P+039540P+039540P+039540P+039540P

Trebuie sa introduc un line break pentru face situl sa arate:
+039540P
+039540P
+039540P

Multumesc anticipat.
 
Last edited:
Întrebarea e care e pattern-ul; întotdeauna începe cu + și se termină cu P și în rest sunt cifre? E într-adevăr nevoie de o expresie regulată, sau pur și simplu vrei un "înlocuiește P+ cu P<br/>+" (caz în care nu ai chiar nevoie de o expresie regulată, un replace all îți rezolvă problema).
 
Incepe cu +, contine 6 cifre si se termina cu P
Vreau sa apara fiecare string pe un rand nou.
 
Și nu vrei să înlocuiești P+ cu P<br/>+? :biggrin:

Ideea generală e că regex-urile sunt destul de costisitoare, n-are rost să le folosești dacă se poate și fără :smile:.
 
Ideal ar fi sa imi ramana doar cifrele astfel:
456345
345234
345234

Dar ma multumesc sa sa imparta pe cate o linie noua
 
Ok, deci în funcție de limbaj faci un replace all pe string-ul ăla după "P+" și înlocuiești cu "<br/>" sau \n, ce-ți trebuie. Doar funcții de string replacement, fără regex stuff.

Regex-urile doar caută match-uri, by default majoritatea engine-urilor de regex nu au și funcționalitate de replace, ci e dată de limbajul pe care-l folosești. Iar în cazul tău oricum poți folosi replace-ul "simplu" și nu-ți mai bați capul :biggrin:.
 
Last edited:
Back
Top