[ dontoo @ 01.04.2010. 14:05 ] @
Pošto nema regex podforuma a programiram u .net-u postavit ću pitanje ovdje.
Ovo je string : 2x^3*3y^2-2x^2y-12xy+3x^3y^4+xy^2
Ja želim izvuči sve između + i - ( podjelit ovaj algebarski izraz na članove ( 2x^3*3y^2 2x^2y 3x^3y^4 xy^2 )). Problem je što na početku i na kraju stringa nema plusa ni minusa. Koristim lookahead and lookbehinde ovako ((?<=\-|\+|^).+?(?=\-|\+|$)). Problem je što kad koristim ^ za gledanje na početak javi mi grešku da lookbehinde mora imati fix width pattern. Ako napišem ovako ((?<=\-|\+).+?(?=\-|\+|$)) , ista stvar bez ^ ne izvuče mi prvi član.
Obasnit ći ovaj regex.
?<=\-|+|^ lookbehinde - ili + ili ^ (početak stringa, tu mi javi grešku )
.+? izvuči sve između ( nemoj biti pohlepan )
?=\-|\+|$ lookahead - ili + ili $ ( kraj, tu je sve ok, izvuče zadnji član )

Zašto ^ ne radi? Kako da izvučem prvi član a da ne kompliciram ovaj regex?
[ Igor Gajic @ 01.04.2010. 14:45 ] @
Zar nije lakse

Code:

   string test = "2x^3*3y^2-2x^2y-12xy+3x^3y^4+xy^2";

   string[] factors = test.Split(new[]{'+','-'});
[ dontoo @ 01.04.2010. 15:41 ] @
Može i tako. Ali ovo (?<=^) radi. Radi i ovo (?<=+|-), ali ovo neradi, (?<=+|-|^).