peterS.: RegExp - einfaches Suchen und Ersetzen mit [replace]

Beitrag lesen

hallo again BSF,

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.

... wissen wir doch schon lange, ich bin doch nur so grandios am generischen
ansatz gescheitert, der *eierlegendwollmichwasweisich* sein wollte, aber schon
die erste huerde nicht nehmen kann, weil »backreferences« in zeichenklassen nicht
zugelassen sind.

vergiss also _jedes_ in den beispielen gegebene suchmuster, welches mit »backreferences«
*arbeitet*.

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!

nein, nein und nein, denn die begruendung fuer einen verzicht genau darauf ...

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('%')

... lieferst Du ja gerade selber.

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

doch, sowohl Andreas als auch ich, haben fuer dein einfaches problem schon
mehrfach loesungen gepostet, liess Dir doch nochmal aufmerksam die jeweiligen
erklaerungen durch.

z.b. stand der hier - /(')([^']*)'/g - zur debatte (C&P >> jconsole.com) ...

var str = "select xyz from table1 where col1 like 'a%' and col2 like 'b%' and col3 like \"xy%\" and col4 like 'ik%'";  
var regX = (/(')([^']*)'/g);  
  
print(regX.test(str));  
print(str.replace(regX, "LOWER($1$2$1)"));

... funktioniert fuer Deine belange genau richtig und kann noch vereinfacht
werden (C&P >> jconsole.com):

var str = "select xyz from table1 where col1 like 'a%' and col2 like 'b%' and col3 like \"xy%\" and col4 like 'ik%'";  
var regX = (/('[^']*')/g);  
  
print(regX.test(str));  
print(str.replace(regX, "LOWER($1)"));

ich hoffe, ich habe wieder einigermassen ordnung in das von mir geschaffene
chaos gebracht.

so long - peterS. - pseliger@gmx.net

--
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - Douglas Crockford
ie:( fl:) br:> va:( ls:& fo:) rl:) n3;} n4:} ss:} de:µ js:} mo:? zu:]