[Javalist] RegExp probléma: nem aposztrófok közé zártak felismerése

Zsombor gzsombor at gmail.com
2013. Dec. 2., H, 12:41:15 CET


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.
 Mondjuk lehet egyszerűbb lenne a helyzet, ha nem ilyen gyakori karakter
lenne az escape szekvencia, hanem mondjuk %%%paraméter%%% ?
Erre biztos egyszerűbb regexpet írni ;)

Üdv
 Zs


2013/12/2 József Keresztes <xesj.hu at gmail.com>

> Ha ez a regexp
> ^((?:[^']*'[^']*')+[^']*):[a-z]+
> működik az nagyon szép megoldás lenne.
>
> 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 egy boolean tömbben 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ő.
>
> Egyébként köszönöm mindenkinek a sok választ.
>
> 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 ?
>
> Joe
>
>
> 2013. december 2. 10:55 Suller Andras írta, <suller.andras at gmail.com>:
>
> Ebben az esetben aligha fogod tudni elkerulni, hogy a regularis
>> kifejezesben "szamold" az aposztrofokat a szoveg elejetol kezdve. Ami
>> azt jelenti, hogy valoszinuleg a feldolgozot is modositanod kell majd.
>> Egy ilyen regex peldaul csak az aposztrofon kivuli azonositokat ismeri
>> fel (kihasznalva azt, hogy SQL-ben az aposztrofot dupla aposztroffal
>> kell escape-elni):
>> ^((?:[^']*'[^']*')+[^']*):[a-z]+
>>
>> Javascript-ben igy lehet hasznalni peldaul (ezen a gepen nincs java,
>> de gondolom ott is hasonlo):
>> > s="SELECT 'ez nem'':kell' FROM valami WHERE id = :id and ':' = 'x' or
>> p.id=:pid and p.selected"
>> > s=s.replace(/^((?:[^']*'[^']*')+[^']*):[a-z]+/, '$1?')
>> 'SELECT \'ez nem\'\':kell\' FROM valami WHERE id = :id and \':\' =
>> \'x\' or p.id=? and p.selected'
>> > s=s.replace(/^((?:[^']*'[^']*')+[^']*):[a-z]+/, '$1?')
>> 'SELECT \'ez nem\'\':kell\' FROM valami WHERE id = ? and \':\' = \'x\'
>> or p.id=? and p.selected'
>>
>> Viszont en erre nem mondanam, hogy elegans...
>>
>> Andras
>>
>> 2013/12/2 József Keresztes <xesj.hu at gmail.com>:
>> >> Milyen karakterek lehetnek a : elott? Ha csak szokoz, akkor az
>> segithet.
>> >
>> > Bármilyen karakter állhat. pl:   oszlopnev||:x
>> >
>> > De az aposztrófon belül is lehet hogy van szóköz, lehet hogy nincs.
>> >
>> >
>> > 2013/12/2 Suller Andras <suller.andras at gmail.com>
>> >>
>> >>
>> >> On Dec 1, 2013 11:43 PM, "József Keresztes" <xesj.hu at gmail.com> wrote:
>> >> > String originalSql = "select * from telepules where kod = :x";
>> >>
>> >> Milyen karakterek lehetnek a : elott? Ha csak szokoz, akkor az
>> segithet.
>> >>
>> >> Andras
>> >>
>> >>
>> >> _______________________________________________
>> >> Javalist mailing list
>> >> Javalist at lists.javaforum.hu
>> >> http://lists.javaforum.hu/mailman/listinfo/javalist
>> >>
>> >
>> >
>> > _______________________________________________
>> > Javalist mailing list
>> > Javalist at lists.javaforum.hu
>> > http://lists.javaforum.hu/mailman/listinfo/javalist
>> >
>> _______________________________________________
>> Javalist mailing list
>> Javalist at lists.javaforum.hu
>> http://lists.javaforum.hu/mailman/listinfo/javalist
>>
>
>
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
>
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20131202/2a9f2388/attachment.html>


További információk a(z) Javalist levelezőlistáról