<div dir="ltr"><div><div>Látom mindenki nagyon belemelegedett a regexpekbe, de lehet, hogy ha hátrébb lépnénk 3 lépést, és végig gondolnánk a problémát, találhatnánk egy egyszerűbb megoldást.<br> Mondjuk lehet egyszerűbb lenne a helyzet, ha nem ilyen gyakori karakter lenne az escape szekvencia, hanem mondjuk %%%paraméter%%% ? <br>
Erre biztos egyszerűbb regexpet írni ;)<br><br></div>Üdv<br></div> Zs<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/12/2 József Keresztes <span dir="ltr"><<a href="mailto:xesj.hu@gmail.com" target="_blank">xesj.hu@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Ha ez a regexp <div class="im"><div><span style="font-size:13px;font-family:arial,sans-serif">^((?:[^']*'[^']*')+[^']*):[a-</span><span style="font-size:13px;font-family:arial,sans-serif">z]+</span></div>
</div><div><span style="font-size:13px;font-family:arial,sans-serif">működik az nagyon szép megoldás lenne.</span></div><div><span style="font-size:13px;font-family:arial,sans-serif"><br></span></div>
<div><span style="font-size:13px;font-family:arial,sans-serif">Ha nem akkor azt a megoldást tudom elképzelni hogy marad az eredeti regexp, amit az első levélben írtam, de kombinálnám azzal hogy előszőr végigmegyek a string-en, és </span><span style="font-size:13px;font-family:arial,sans-serif">egy boolean tömbben </span><span style="font-size:13px;font-family:arial,sans-serif">minden karakter pozicióra letenném hogy páros vagy páratlan számú aposztróf volt ezidáig. Amikor a regexp általi találatokon végigfutok, csak a tömbből kéne vizsgálni hogy páros számú aposztróf volt e idáig ezen a pozíción. Ha igen akkor "valódi" paraméter mely "?"-el helyettesítendő.</span></div>
<div><span style="font-size:13px;font-family:arial,sans-serif"><br></span></div><div><span style="font-size:13px;font-family:arial,sans-serif">Egyébként köszönöm mindenkinek a sok választ.</span></div>
<div><span style="font-size:13px;font-family:arial,sans-serif"><br></span></div><div><span style="font-size:13px;font-family:arial,sans-serif">Azért abban erősítsetek meg, tényleg igaz-e, hogy a ":x" valóban paraméter abban az esetben ha páros számú aposztróf fordult elő őt megelőzően ? </span></div>
<div><span style="font-size:13px;font-family:arial,sans-serif"><br></span></div><div><span style="font-size:13px;font-family:arial,sans-serif">Joe </span></div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">2013. december 2. 10:55 Suller Andras írta, <span dir="ltr"><<a href="mailto:suller.andras@gmail.com" target="_blank">suller.andras@gmail.com</a>></span>:<div><div class="h5"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Ebben az esetben aligha fogod tudni elkerulni, hogy a regularis<br>
kifejezesben "szamold" az aposztrofokat a szoveg elejetol kezdve. Ami<br>
azt jelenti, hogy valoszinuleg a feldolgozot is modositanod kell majd.<br>
Egy ilyen regex peldaul csak az aposztrofon kivuli azonositokat ismeri<br>
fel (kihasznalva azt, hogy SQL-ben az aposztrofot dupla aposztroffal<br>
kell escape-elni):<br>
^((?:[^']*'[^']*')+[^']*):[a-z]+<br>
<br>
Javascript-ben igy lehet hasznalni peldaul (ezen a gepen nincs java,<br>
de gondolom ott is hasonlo):<br>
> s="SELECT 'ez nem'':kell' FROM valami WHERE id = :id and ':' = 'x' or <a href="http://p.id" target="_blank">p.id</a>=:pid and p.selected"<br>
> s=s.replace(/^((?:[^']*'[^']*')+[^']*):[a-z]+/, '$1?')<br>
'SELECT \'ez nem\'\':kell\' FROM valami WHERE id = :id and \':\' =<br>
\'x\' or <a href="http://p.id" target="_blank">p.id</a>=? and p.selected'<br>
> s=s.replace(/^((?:[^']*'[^']*')+[^']*):[a-z]+/, '$1?')<br>
'SELECT \'ez nem\'\':kell\' FROM valami WHERE id = ? and \':\' = \'x\'<br>
or <a href="http://p.id" target="_blank">p.id</a>=? and p.selected'<br>
<br>
Viszont en erre nem mondanam, hogy elegans...<br>
<br>
Andras<br>
<br>
2013/12/2 József Keresztes <<a href="mailto:xesj.hu@gmail.com" target="_blank">xesj.hu@gmail.com</a>>:<br>
<div><div>>> Milyen karakterek lehetnek a : elott? Ha csak szokoz, akkor az segithet.<br>
><br>
> Bármilyen karakter állhat. pl: oszlopnev||:x<br>
><br>
> De az aposztrófon belül is lehet hogy van szóköz, lehet hogy nincs.<br>
><br>
><br>
> 2013/12/2 Suller Andras <<a href="mailto:suller.andras@gmail.com" target="_blank">suller.andras@gmail.com</a>><br>
>><br>
>><br>
>> On Dec 1, 2013 11:43 PM, "József Keresztes" <<a href="mailto:xesj.hu@gmail.com" target="_blank">xesj.hu@gmail.com</a>> wrote:<br>
>> > String originalSql = "select * from telepules where kod = :x";<br>
>><br>
>> Milyen karakterek lehetnek a : elott? Ha csak szokoz, akkor az segithet.<br>
>><br>
>> Andras<br>
>><br>
>><br>
>> _______________________________________________<br>
>> Javalist mailing list<br>
>> <a href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><br>
>> <a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
>><br>
><br>
><br>
> _______________________________________________<br>
> Javalist mailing list<br>
> <a href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><br>
> <a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
><br>
_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu" target="_blank">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
</div></div></blockquote></div></div></div><br></div>
<br>_______________________________________________<br>
Javalist mailing list<br>
<a href="mailto:Javalist@lists.javaforum.hu">Javalist@lists.javaforum.hu</a><br>
<a href="http://lists.javaforum.hu/mailman/listinfo/javalist" target="_blank">http://lists.javaforum.hu/mailman/listinfo/javalist</a><br>
<br></blockquote></div><br></div>