Oracle-regex-match Leerzeichen
Ich versuche mich zu ändern einen Wert in oracle mit regex:
input: <input id="f_alta">13/10/2016 10:10:10</input>
output: 13/10/2016 10:10:10
gut, dass man in den Knoten, die ich benutze: ([\s0-9/:]+) aber ist keine Arbeit, trotzdem kann ich verwenden: ([ 0-9/:]+) und funktioniert, warum nicht mit der ersten?
Bin ich mit oracle sql developer für tests.
Beispiel:
NICHT FUNKTIONIERT:
select REGEXP_REPLACE('<input id="f_alta">13/10/2016 10:10:10</input>', '<input id="f_alta">([\s0-9/:]+)</input>', '\1' ) from dual
ARBEITEN:
select REGEXP_REPLACE('<input id="f_alta">13/10/2016 10:10:10</input>', '<input id="f_alta">([ 0-9/:]+)</input>', '\1' ) from dual
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da die
\s
ist eine Perl-ähnliche Konstrukt-und Oracle-regex-POSIX-basierte, ist es sicherer, verwenden die POSIX Charakter-Klasse[:space:]
(auch vertikale Leerzeichen) oder[:blank:]
(nur match Leerzeichen und Tabulatoren).E. g. verwenden
Immer daran denken, verwenden Sie POSIX-Zeichenklassen innerhalb Klammer-Ausdrücken (also mit einem alpha-Zeichen, verwenden Sie
[[:alpha:]]
, d.h. der name der Klasse muss innerhalb Doppelpunkte und doppelten eckigen Klammern).