[Javalist] RegExp probléma: nem aposztrófok közé zártak felismerése
József Keresztes
xesj.hu at gmail.com
2013. Dec. 1., V, 17:42:58 CET
Sziasztok !
Megnéztem és mivel úgy kb. 300 ember van ezen a levelezőlistán, ennyi
embernek kell hogy legyen frappáns ötlete egy látszólag
egyszerű probléma megoldására. A problémát már régebben is felvetettem, de
akkor nem született igazi megoldás,
és mivel én sem oldottam meg azóta (mert nem elég elegánsak a megoldások),
újra próbálkozom.
Arról van szó hogy egy SQL stringben kettősponttal jelöljük a paramétereket
például:
String originalSql = "select * from telepules where kod = :x";
Mivel a JDBC-ben nincs ":x" ezért "?" -re kell alakítani. Erre a megoldás
egyszerű, régen alkalmazom a következő kódot:
Matcher matcher = Pattern.compile(":[a-z_0-9]+",
Pattern.CASE_INSENSITIVE).matcher(originalSql);
majd a matcher.find() -dal mindent meg lehet oldani, a "?"-es cserét stb.
Azonban a probléma jelentkezik például egy ilyen sql-nél:
String originalSql = "select to_char(datum,'hh24:mi:ss') from telepules
where kod = :x";
Sajnos az előző pattern-es megoldás nem tudja figyelembe venni hogy
aposztrófok között van a :mi és a :ss ezeknek nem kellene megfelelni
a feltételeknek, csak a :x -nek, csak az utóbbit kellene ?-re cserélni.
Szóval számomra az lenne az elfogadható frappáns megoldás ha ezt kizárólag
a regexp kifejezés átírásával lehetne megoldani.
Ha van erre valakinek megoldása azt szívesen fogadnám.
Joe
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20131201/02b7c6f1/attachment.html>
További információk a(z) Javalist levelezőlistáról