Oracle regex: \ Q \ E non funziona
-
24-09-2019 - |
Domanda
ho scoperto che \Q\E
non funziona in Oracle.
Qual è l'espressione equivalente di \Q\E
per Oracle regex?
Soluzione
Questa è una vecchia questione, ma con Java si può fare
Pattern.quote(yourString);
che restituisce una stringa letterale. Così il .
String sarebbe tornato \Q.\E
, che potrebbe essere considerato un periodo dalla Matcher.
Altri suggerimenti
In Perl, \Q
inizia la fuoriuscita automatica dei caratteri speciali e \E
ferma questo comportamento. Quindi, all'interno di un blocco \Q \E
, un punto sarebbe stato trattato come un puntino letterale, piuttosto che qualsiasi carattere.
Se Oracle non supporta questo, poi basta sfuggire caratteri speciali che sarebbero stati nel blocco.
Questa è vecchio, ma ancora un problema in Oracle Database 11g Release 11.2.0.1.0, e io non lo vedo indirizzato altrove. Quindi, nel caso in cui aiuta gli altri, la mia soluzione è:
selezionare manichino da doppia dove REGEXP_LIKE (fittizio, REGEXP_REPLACE ( 'X', '([] \ ^ $ |. () [? * + {},])', '\\\ 1'))