[ negyxo @ 16.04.2008. 10:33 ] @
Evo interesantan problem, ne znam dovoljno regex pa me interesuje da li je ovo izvodljivo preko regex-a.

Situacija je sledeca:

U zadatom stringu imam odredjene stringove koji predstavljaju neku vrstu promenljivih koje program kasnije treba da zameni. Da bi promenljivu prepoznali uveli smo rezervisani/meta karakter. U nasem slucaju to j e $ (dolar).

prim.

Code:

string s = "There can be only $one";


U ovom slucaju regex bi trebao da matchuje $one i da zameni sa nekom vrednosti. Naravno ovo nije problem, nego problem nastaje kada postoji vise $ znakova.

prim.

Code:

string s = "There can be only $$one or $two";


U ovom slucaju bi trebalo samo $two da se match-uje i zameni. Znaci trebalo bi nekako reci regex-u da gleda sva poklapanja koja imaju nesto kao \$[\w]+ ali da prethodni znak pre match-a ne pocnije sa $. Problem je sto ako bi napisao nesto kao [^\$]\$[\w]+, onda ce se dobiti dobar match (sem ako je $nesto na samom pocetku stringa) ali nece se dobro zameniti.




[ mmix @ 16.04.2008. 10:58 ] @
Treba ti nesto szto se zove: Zero-width negative lookbehind assertion (?<!expression)



Znaci regex koji trazis je

(?<!\$)\$\w+
[ negyxo @ 16.04.2008. 11:07 ] @
Svaka cast, to je to. Mislim da "lookbehind" dovoljno govori.

Hvala.