BSF: RegExp - »backreferences« in regulären Ausdrücken

Beitrag lesen

Hallo zusammen,

das Problem mit den einzelnen Hochkommata und den doppelten ergibt sich bei mir nicht, da ich in dem sql statement ausschließlich einzelne Hochkomma habe, die es zu suchen gilt.
Somit ist diese Lösung hier von Peter -->

var regX = (/(['])([^\1]*?)\1/g);
         whereStr = whereStr.replace(regX, "LOWER($1$2$1)");

für mich wunderbar!
Leider habe nur noch das Problem, dass natürlich Murks rauskommt, wenn in einem der Suchwerte wiederum ein einzelnes Hochkomma vorkommt
--> str = "select Lower(col1) from table1 where col1 like 'b''%'";
ergibt : select Lower(col1) from table1 where col1 like LOWER('b')LOWER('%')

Aber ich glaube, aus der Nummer kommt man so nicht raus...

Dennoch, vielen, vielen Dank für Eure Bemühungen!

Gruss,

BSF

was zwar selten ist, aber vorkommen kann. Aber ich glaube, aus der Nummer kommt man so nicht raus...

Hi,

bleiben also nur die vorgestellten muster fuer die einzeln zu
betrachtenden faelle »nur '« sowie »nur "«, die sich dann aber
mit der verketteten anwendungen zweier [replace] methoden doch
noch als kombinierte loesung empfehlen.

Wieso zwei Replace-Methoden?

Wenn die ' oder " erhalten bleiben sollen:, kann man einfach
Suche nach:    ((?:'[^']*')|(?:"[^"]*"))
Ersetze durch: LOWER(\1)
Die ' bzw. " werden ja mit-gefangen.

Wenn die ' oder " durch eine Sorte (z.B. immer ') ersetzt werden sollen:
Suche nach:    (?:'([^'])*')|(?:"([^"])*")
Ersetze durch: LOWER('\1\2')
Denn entweder ist die erste Backreferenz gefüllt (bei '') und die zweite leer oder die erste leer (bei "") und die zweite gefüllt.

cu,
Andreas