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

Suller Andras suller.andras at gmail.com
2013. Dec. 2., H, 10:55:39 CET


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
>


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