Novo

Forum kao aplikacija na telefonu

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

  • 8 odgovora
  • 3.794 pregleda

Najnovija ↓

regex C# (nista mi nije jasno) 29.02.2012. u 16:17 · pre 178 meseci #1
Treba da izvrsim neki ogromn set SQL comandi, velicine oko 80kb. Posto iz nekog razloga MySQL (klijent trazi stari MySQL 3.23) connector ne moze da prihvati ovoliki string dobio sam savet da radim parse i izvlacim komandu po komandu.

Nakon pretrage sam dosao do zakljucka da je najbolje da koristim regex ali iz nekog razloga nikako ne mogu da ga nateram da radi.
String je na primer:
Code:
SQLcommand = "bla bla START ovde nesto END bla bla"
i ja hocu da izbrisem sve od START do END i za to koristim komandu:
Code:
SQLcommand = Regex.Replace(SQLcommand, "START*END", " ");
Nakon ovoga se ne desava apsolutno nista.
Ako izvrsim na primer:
Code:
SQLcommand = Regex.Replace(SQLcommand, "START", "end");
onda se radi.
Pitanje je zasto ne radi *, treba li nekako drugacije da definisem ovo?

Pozdrav svima i unapred hvala.
Potpis
Hear all, trust nothing!
Re: regex C# (nista mi nije jasno) 29.02.2012. u 16:41 · pre 178 meseci #2
treba da stoji: .*
i pogledaj, da podesis (ne znam sad kako se zove taj property), da ti na first occurence of END upari taj regex, da ne ide do poslednjeg END-a slucajno.
Re: regex C# (nista mi nije jasno) 29.02.2012. u 16:45 · pre 178 meseci #3
Citat:
sallle: treba da stoji: .*
i pogledaj, da podesis (ne znam sad kako se zove taj property), da ti na first occurence of END upari taj regex, da ne ide do poslednjeg END-a slucajno.


.*?
:) (jos upitnik da postaje non-greedy)
Potpis
Bolje ispasti glup nego iz aviona
http://www.mulaz.org/
Sviđa mi se1
Re: regex C# (nista mi nije jasno) 29.02.2012. u 20:13 · pre 178 meseci #4
E hvala puno radi ovo. Samo jos dva pitanja.

1.Kako da prosirim uslov da hvata vise linije?
Tj uslov sada radi ali samo ako je sve u istoj liniji
ali ne i ako je pocetak u jednoj a kraj u nekoj sledecoj liniji?

2. Kako da upotrebim Escape karakter, na primer
\* bi trebalo da bude * ali program prijavljuje gresku?

Potpis
Hear all, trust nothing!
Re: regex C# (nista mi nije jasno) 29.02.2012. u 20:32 · pre 178 meseci #5
* mozes da escapujes koristeci: [*]
taj regex.replace ima overload kome se kao parametar navode neke opcije (flagovi), mislim da tu imas da podesis multiline (pa ti onda . vazi i za \n\r karaktere)...
Re: regex C# (nista mi nije jasno) 29.02.2012. u 20:34 · pre 178 meseci
izmenjeno 1 put, poslednji put bobby63 29.02.2012. u 20:46
  1. bobby6329.02.2012. u 20:46zapis iz teksta poruke
#6
Pod 2 sam provalio treba \\*, bolesne li sintaxe a i uputstva po netu su katastrofa.

Provalio sam i pod jedan da ima overload sa flagovima.
Treba da stoji RegexOptions.SingleLIne sto je pisac hteo da kaze da posmatra string kao jednu liniju
Code:
SQLcommand = Regex.Replace(SQLcommand, "Nesto", "", RegexOptions.Singleline);

Hvala Puno.
Potpis
Hear all, trust nothing!
Re: regex C# (nista mi nije jasno) 29.02.2012. u 21:19 · pre 178 meseci #7
Ne zaboravi da c# parser prvi vidi tvoj string a on isto podrzava escape sekvence, tako da string koji ti vidis nije string koji size do regex-a.
Dakle ili koristis "\\*" ili iskljucis c# compiler escaping sa @, tj @"\*". Ja licno vise koristim @, onda mogu da naveem konkretan regex string bez bojazni.

Potpis
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić
Re: regex C# (nista mi nije jasno) 29.02.2012. u 22:39 · pre 178 meseci #8
Hvala puno, zbunjivalo me sto po netu svuda pise \* a nigde \\*.
U medjuvremenu sam provalio da ima i
Code:
string daVidimoKakoToIzgleda = Regex.Escape("*");
pa tu proveravam bez ikakve nedoumice sta regex ocekuje.
Jos jednom hvala, ne bih se snasao bez pomoci a evo vec sam napravio ovej parser da radi ispravno.
Potpis
Hear all, trust nothing!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme