Kategorien:

Zeichenfolgenfunktionen (reguläre Ausdrücke)

REGEXP_REPLACE

Gibt das Subjekt mit dem angegebenen Muster (oder alle Vorkommen des Musters) zurück, entweder entfernt oder ersetzt durch eine Ersetzungszeichenfolge. Wenn keine Übereinstimmungen gefunden werden, wird das ursprüngliche Subjekt zurückgegeben.

Siehe auch Zeichenfolgenfunktionen (reguläre Ausdrücke).

Syntax

REGEXP_REPLACE( <subject> , <pattern> [ , <replacement> , <position> , <occurrence> , <parameters> ] )

Argumente

Benötigt:

Subjekt

Abzugleichendes Subjekt.

Muster

Abzugleichendes Muster.

Optional:

Ersetzung

Zeichenfolge, die als Ersatz für die vom Muster gefundenen Teilzeichenfolgen dient. Wenn eine leere Zeichenfolge angegeben wird, entfernt die Funktion alle gefundenen Muster und gibt die resultierende Zeichenfolge zurück.

Standard: '' (leere Zeichenfolge).

Position

Anzahl der Zeichen ab dem Anfang der Zeichenfolge, an dem die Funktion mit der Suche nach Übereinstimmungen beginnt.

Standard: 1 (die Suche nach einer Übereinstimmung beginnt beim ersten Zeichen links)

Vorkommen

Gibt an, welches Vorkommen des Musters ersetzt werden soll. Wenn 0 angegeben ist, werden alle Vorkommen ersetzt.

Standard: 0 (alle Vorkommen)

Parameter

Zeichenfolge aus einem oder mehreren Zeichen, in der die Parameter angegeben sind, die zur Suche nach Übereinstimmungen verwendet werden. Unterstützte Werte:

c , i , m , e , s

Weitere Informationen dazu finden Sie unter Parameter für reguläre Ausdrücke.

Standard: c

Nutzungshinweise

  • Die Ersetzungszeichenfolge kann Rückverweise enthalten, um Gruppen zu erfassen (d. h. Unterausdrücke des Musters). Eine Erfassungsgruppe ist ein regulärer Ausdruck, der in Klammern (( )) eingeschlossen ist. Die maximale Anzahl von Erfassungsgruppen beträgt 9.

    Rückverweise gleichen Ausdrücke in einer Erfassungsgruppe ab. Rückverweise haben das Format n. Dabei ist n ein Wert zwischen 0 und einschließlich 9, der sich auf die übereinstimmende Instanz der Erfassungsgruppe bezieht. Weitere Details dazu finden Sie unter Beispiele (unter diesem Thema).

  • Runde Klammern (( )) und eckige Klammern ([ ]) müssen derzeit mit doppelten Escape-Zeichen versehen werden, damit sie als Literalzeichenfolgen analysiert werden.

    Das folgende Beispiel zeigt, wie Klammern entfernt werden:

    SELECT REGEXP_REPLACE('Customers - (NY)','\\(|\\)','') AS customers;
    
    +----------------+
    | CUSTOMERS      |
    |----------------|
    | Customers - NY |
    +----------------+
    
  • Weitere Hinweise zur Verwendung der Funktionen für reguläre Ausdrücke finden Sie unter Allgemeine Nutzungshinweise.

Sortierungsdetails

Arguments with collation specifications are currently not supported.

Beispiele

Im folgenden Beispiel werden alle Leerzeichen in der Zeichenfolge durch nichts ersetzt, d. h. alle Leerzeichen werden entfernt:

select regexp_replace('It was the best of times, it was the worst of times', '( ){1,}','') as "result" from dual;

+------------------------------------------+
| result                                   |
|------------------------------------------|
| Itwasthebestoftimes,itwastheworstoftimes |
+------------------------------------------+

Im folgenden Beispiel wird die Zeichenfolge times abgeglichen und durch die Zeichenfolge days ersetzt. Der Abgleich beginnt beim 1. Zeichen in der Zeichenfolge und ersetzt das zweite Vorkommen der Teilzeichenfolge:

select regexp_replace('It was the best of times, it was the worst of times', 'times','days',1,2) as "result" from dual;

+----------------------------------------------------+
| result                                             |
|----------------------------------------------------|
| It was the best of times, it was the worst of days |
+----------------------------------------------------+

Im folgenden Beispiel werden Rückverweise verwendet, um die Zeichenfolge firstname middlename lastname als lastname, firstname middlename neu zu ordnen und zwischen lastname und firstname ein Komma einzufügen:

select regexp_replace('firstname middlename lastname','(.*) (.*) (.*)','\\3, \\1 \\2') as "name sort" from dual;

+---------------------------------------------------------------------------------+
| REGEXP_REPLACE('FIRSTNAME MIDDLENAME LASTNAME','(.*) (.*) (.*)','\\3, \\1 \\2') |
|---------------------------------------------------------------------------------|
| lastname, firstname middlename                                                  |
+---------------------------------------------------------------------------------+