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

Beitrag lesen

gruss BSF,

/*  
  
  gesucht werden sollen also _alle_ durch einfache bzw. durch doppelte  
  hochkommata eingefassten zeichensequenzen:  
  
1)  
  ['"] - *matched* genau ein zeichen, welches entweder ein einfaches  
  oder ein doppeltes hochkomma ist.  
2)  
  [^'"]* - *matched* genau keins, eins oder mehrere zeichen, die weder  
  einfache noch doppelte hochkommata sind.  
3)  
  (['"]) - wie (1), nur das dieses zeichen auf einem internen ueber  
  »1« zu adressierenden *speicher* abgelegt wird.  
4)  
  [^\\1]* - wie (2), nur das hier schon mit der internen gerade unter  
  (3) genannten referenz auf deas erste *gematchte* zeichen gearbeitet  
  wird.  
5)  
  ([^\\1]*) wie (4), nur das der ganze kram jetzt ebenfalls gespeichert  
  wird - diesmal unter der internen referenz »2«.  
6)  
  \1 wie unter (1), nur das hier ebenfalls wieder mit der internen  
  referenz, wie auch gerade unter (4) beschrieben, gearbeitet wird.  
  
  
  arbeitsprobe - bitte *copy and paste* unter [link:http://jconsole.com@title=jconsole.com]:  
*/  
  
  
var str, regX;  
  
str = "select xyz from table1 where col1 like 'a%' and col2 like \"b%\"";  
regX = (/(['"])([^\\1]*)\1/g);  
  
print(regX.test(str));  
print(str.replace(regX, "LOWER($1$2$1)"));  
  
  
str = "select xyz from table1 where col1 like \"c%\" and col2 like 'd%'";  
regX = (/(['"])([^\\1]*)\1/g);  
  
print(regX.test(str));  
print(str.replace(regX, (function () {  
  return ("LOWER(" + arguments[1] + arguments[2] + arguments[1] + ")");  
})));

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:]