2010-03-03 6 views
1

J'ai trouvé que \Q\E ne fonctionne pas dans l'oracle.
Quelle est l'expression équivalente de \Q\E pour oracle regex?Oracle regex: Q E ne fonctionne pas

+0

Ce qui devrait \ Q \ E faire? – Jens

+0

Quel moteur regex supporte '\ Q \ E'? – YOU

+2

Perl et Java, selon http://www.regular-expressions.info/characters.html#qe. Il a échappé aux caractères contenant comme texte littéral. –

Répondre

0

C'est une question ancienne, mais avec Java que vous pouvez faire

Pattern.quote(yourString); 

qui retourne une chaîne littérale. Ainsi, la chaîne . renverra \Q.\E, ce qui sera considéré comme une période par le Matcher.

5

En Perl, \Q arrête l'échappement automatique des caractères spéciaux et \E arrête ce comportement. Ainsi, dans un bloc \Q \E, un point serait traité comme un point littéral plutôt que comme un caractère.

Si Oracle ne supporte pas cela, alors vous échapper des caractères spéciaux qui auraient été dans le bloc.

+0

fait comme vous l'avez dit. ça a marché. et java a l'air terrible :) myString.replaceAll ("\\\ (", "\\\\\ (") .ReplaceAll ("\\\)", "\\\\\)" espoir il existe meilleure façon –

0

C'est vieux, mais toujours un problème dans Oracle Database 11g Release 11.2.0.1.0, et je ne vois pas abordée ailleurs. Ainsi, dans le cas où il aide les autres, ma solution est:

mannequin sélection de double où REGEXP_LIKE (mannequin, regexp_replace ('X', '([] \^$ |() [* + {.? },]) », '1 \\\'))