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

József Keresztes xesj.hu at gmail.com
2013. Dec. 2., H, 12:34:31 CET


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
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20131202/92009ddd/attachment.html>


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