Code:
Regex reg = new Regex(@"\d[a-z]|[a-z]\d|[a-z][a-z]");//23x y +3xy - 34 x y -5 x y + 34 x y34+ x2y4
MatchCollection matchC;
matchC = reg.Matches(input);
int ii = 0;
foreach (Match element in matchC)
{
input = input.Insert(element.Index + ii, " * ");
ii += 3;
}
Regex reg = new Regex(@"\d[a-z]|[a-z]\d|[a-z][a-z]");//23x y +3xy - 34 x y -5 x y + 34 x y34+ x2y4
MatchCollection matchC;
matchC = reg.Matches(input);
int ii = 0;
foreach (Match element in matchC)
{
input = input.Insert(element.Index + ii, " * ");
ii += 3;
}
Ovaj kod ne funkcionira zato što regex \d[a-z]|[a-z]\d|[a-z][a-z] koristi operator | koji uvijek bira između dvije alternative. Sad kad on naiđe na 3xy trebao bi napisati 3*x*y, ali on gleda 3-x | x-y. Kako 3-x je true on više negleda drugi izbor. Kako ga napravit greedy? Da gleda ili ovo ili ono ili oba? Mučim se već sat vremena, ne mogu vjerovat da na netu nema ništa o tome.