Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 1 odgovor
  • 1.724 pregleda

Najnovija ↓

Regex Greedy OR? 04.04.2010. u 12:47 · pre 201 mesec #1
Kako napraviti greedy OR (|)? Ako je ovo dio string (string ima još drugih karaktera koje moram ignorirat) ...21xy32... Ja želim ubacit znak(sa razmakom) ' * ' između broja i slova \d[a-z], između slova i broja[a-z]\d i između slova i slova [a-z][a-z]
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;
        }


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.
Re: Regex Greedy OR? 04.04.2010. u 18:22 · pre 201 mesec #2
Riješeno
Regex reg = new Regex(@"(\d(?=[a-z])|[a-z](?=[a-z\d]))");
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme