

C# split podle regexu
Zdravím, potřebuji poradit s regexem v C#.
Mám lineární rovnici např: '10x-5y=6' a já potřebuji rozdělit levou stranu, tj '10x-5y' podle '+' a '-' a to včetně těchto delimiterů.
Tímto příkazem:
array = Regex.Split(left_part, @"(?<=[+-])");
dostanu z '10x-5y' pole, které má prvky: '10x-' a '5y', jenže já potřebuji '10x' a '-5y'.
Určitě to půjde jen nějakou úpravou toho regexu, jenže já nevím jak.
Samozřejmě bych to mohl projít a opravit sám, jen mi to přijde jako zbytečná práce.
Díky.
Na rozdelenie používaš kladné tvrdenie o predchádzajúcom (positive lookbehind), čiže sa to rozdelí tam, kde bol predchádzajúci znak + alebo -.
Keď chceš, aby sa to rozdelilo tam, kde bude nasledujúci znak + alebo -, musíš použiť kladné tvrdenie o nasledujúcom (positive lookahead): @"(?=[+-])"
To je přesně ono! Díky.
Mohl bys mi vysvětlit ten druhý parametr obecně? Proč je před výrazem zavináč? K čemu slouží ten otazník s rovná se?
Strucna regex referencia je aj na MSDN http://msdn.microsoft.com/cs-cz/library/az24scfc%2 8v=vs.110%29.aspx
ale prepni si to asi na anglictinu lebo ten strojovy preklad je nepouzitelny :)
Vysvetluje sa tam ze ktory retazec zodpoveda danemu regexu (v pravom stlpci mas priklad). Na fciu Regex.Split sa to dost blbo prenasa ptz ta fcia je uplne chaoticky popisana (raz to match string odstrani, raz ho prilepi, co vobec neni v MSDN popisane, ale los ako vzdy ma pravdu :)
P.S. ja to chapem tak ze tam mas potom match prazdny string (0znakov) a preto ten Split neurobi ten treti string (ten by bol 0znakovy). A ty vlastne udavas kde sa ten 0znakovy string nachadza, ci pred alebo po znamienku. Je mi to novinka, ale asi to bude tak.