Merhaba arkadaslar,

regex konusunda tavsiyelerinize, daha dogrusu yardimlariniza ihtiyacim var.

bir turlu asagidaki algoritmayi olusturamadim regex ile


diyelim ki elimde asagida ki gibi bit string var.

$str="
kelime kelime -:-:-:- karsilik, karsilik; karsilik 2
kelime2 kelime2 -:-:-:- karsilik; karsilik (birseyler)
kelime 3 -:-:-:- karsilik (birseyler, birseyler), birsey (asd); birsey
";



ben bu stringi oncelikler satirlara boluyorum sonrada once -:-:-:- kisimlarinda explode(...) ile ayiriyorum. sonra karsiliklari da , (virgul) ve ; (noktali virgul) kisimlarinda explode ile ayiriyorum.

ama string dede gordugunuz gibi bu sekilde yaparsam problem oluyor, soyle ki: parantez icinde aciklamalar var ve bazi parantez icindeki aciklamalarda da , (virgul) var.

ama , (virgul) explode yaparken parantez icindekileri kaale almamasi lazim.

bende bunun icin sunu dusundum.

bu scringi once temizleyeyim soyle ki:

butun parantez icindeki verileri alayim baska bir degiskene atiyayim ve onu kaale almasin. ama temizleyecegim parantezler dede soyle bir zorunluluk olmali:

sadece icinde virgul gecen parantezleri ayikla

yani bu sekilde ayiklarsak stringin son hali soyle olacak

önce:

$str="
kelime kelime -:-:-:- karsilik, karsilik; karsilik 2
kelime2 kelime2 -:-:-:- karsilik; karsilik (birseyler)
kelime 3 -:-:-:- karsilik (birseyler, birseyler), birsey (asd); birsey
";



ayiklandiktan sonra:

$str="
kelime kelime -:-:-:- karsilik, karsilik; karsilik 2
kelime2 kelime2 -:-:-:- karsilik; karsilik (birseyler)
kelime 3 -:-:-:- karsilik , birsey (asd); birsey
";

bu sekilde bir regex [ (xyz,xyz) seklinde ama , zorunlulugu olacak icinde, virgul yoksa onu dikkate almiyacak ] nasil bir icerige sahip olmali bunu soracaktim. veyada sorunu anlattim, baska nasil tavsiyeniz olabilir bu konuda.