REGEXP_REPLACE-Funktion Oracle/PLSQL

In diesem Oracle-Lernprogramm wird erläutert, wie Sie die Oracle/PLSQL REGEXP_REPLACE-Funktion mit Syntax und Beispielen verwenden.

Beschreibung

Die Oracle/PLSQL-Funktion REGEXP_REPLACE ist eine Erweiterung der REPLACE-Funktion. Mit dieser Funktion, die in Oracle 10g eingeführt wurde, können Sie eine Folge von Zeichen in einer Zeichenfolge durch einen anderen Zeichensatz mit regulären Ausdrücken ersetzen.

Syntax

Die Syntax für die REGEXP_REPLACE-Funktion in Oracle/PLSQL lautet:

REGEXP_REPLACE( string, pattern [, replacement_string [, start_position [, nth_appearance [, match_parameter ] ] ] ] )

Parameter oder Argumente

string Строка для поиска. Это могут быть CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB.

pattern Die Übereinstimmungsinformationen für reguläre Ausdrücke. Es kann eine Kombination aus Folgendem sein:

Wert Beschreibung
^ Entspricht dem Anfang einer Zeichenfolge. Wenn es mit einem match_parameter von ‚m‘ verwendet wird, stimmt es mit dem Anfang einer Zeile irgendwo innerhalb des Ausdrucks überein.
$ Entspricht dem Ende einer Zeichenfolge. Wenn es mit einem match_parameter von ‚m‘ verwendet wird, stimmt es mit dem Ende einer Zeile irgendwo innerhalb von Ausdruck überein.
* Entspricht null oder mehr Vorkommen.
+ Entspricht einem oder mehreren Vorkommen.
? Entspricht Null oder einem Vorkommen.
. Entspricht einem beliebigen Zeichen außer NULL.
| Wird wie ein „OR“ verwendet, um mehr als eine Alternative anzugeben.
[ ] Wird verwendet, um eine übereinstimmende Liste anzugeben, in der Sie versuchen, mit einem der Zeichen in der Liste übereinzustimmen.
[^ ] Wird verwendet, um eine nicht übereinstimmende Liste anzugeben, in der Sie versuchen, ein beliebiges Zeichen mit Ausnahme der Zeichen in der Liste zu finden.
( ) Wird zum Gruppieren von Ausdrücken als Unterausdruck verwendet.
{m} Entspricht m-mal.
{m,} Entspricht mindestens m-mal.
{m,n} Entspricht mindestens m-mal, aber nicht mehr als n-mal.
\n n ist eine Zahl zwischen 1 und 9. Entspricht dem n-ten Teilausdruck innerhalb von () vor der Begegnung mit \ n.
[..] Entspricht einem Sortierelement, das mehr als ein Zeichen enthalten kann.
[::] Entspricht Zeichenklassen.
[==] Entspricht Äquivalenzklassen.
\d Entspricht einem Ziffernzeichen.
\D Entspricht einem Nicht-Digit-Zeichen.
\w Entspricht einem Wortzeichen.
\W Entspricht einem Nicht-Wortzeichen.
\s Entspricht einem Leerzeichen.
\S entspricht einem Nicht-Leerzeichen-Zeichen.
\A Entspricht dem Anfang einer Zeichenfolge oder entspricht am Ende einer Zeichenfolge vor einem Zeilenvorschubzeichen.
\Z Entspricht am Ende einer Zeichenfolge.
*? Entspricht dem vorhergehenden Muster null oder mehr Vorkommen.
+? Stimmt das vorherige Muster mit einem oder mehreren Vorkommen überein.
?? Entspricht dem vorhergehenden Muster null oder einem Vorkommen.
{n}? Entspricht dem vorherigen Muster n-mal.
{n,}? Stimmt mindestens n mal mit dem vorhergehenden Muster überein.
{n,m}? Entspricht dem vorherigen Muster mindestens n-mal, aber nicht mehr als m-mal.

replacement_string Wahlweise. Übereinstimmende Muster werden durch ersatz_string in string ersetzt. Wenn der Parameter replacement_string weggelassen wird, entfernt die Funktion einfach alle übereinstimmenden Muster und gibt die resultierende Zeichenfolge zurück.

start_position Wahlweise. Es ist die Position in Zeichenfolge, an der die Suche beginnt. Wenn nicht angegeben, wird standardmäßig die erste Position in der Zeichenfolge verwendet.

nth_appearance Wahlweise. Es ist der n-te Auftritt von pattern in string. Wenn es weggelassen wird, wird standardmäßig 1 verwendet. Dies ist das erste Auftreten von Muster in Zeichenfolge. Wenn Sie 0 für diesen Parameter angeben, werden alle Erscheinungsbilder von pattern in string ersetzt.

match_parameter Wahlweise. Damit können Sie das Übereinstimmungsverhalten für die Funktion REGEXP_REPLACE ändern. Es kann eine Kombination der folgenden sein:

Wert Beschreibung

‚c‘ Führen Sie eine Unterscheidung zwischen Groß- und Kleinschreibung durch.

‚i‘ Führen Sie die Groß- / Kleinschreibung nicht aus.

’n‘ Ermöglicht die Übereinstimmung des Punkts (.) Mit dem Zeilenumbruchzeichen. Standardmäßig ist der Punkt ein Platzhalter.

‚m‘ Es wird angenommen, dass Ausdruck mehrere Zeilen hat, wobei ^ der Anfang einer Zeile und $ das Ende einer Zeile ist, unabhängig von der Position dieser Zeichen im Ausdruck. Standardmäßig wird der Ausdruck als einzelne Zeile angenommen.

‚x‘ Leerzeichen werden ignoriert. Standardmäßig werden Leerzeichen wie jedes andere Zeichen verglichen.

Notiz

  • Die Funktion REGEXP_REPLACE gibt einen Zeichenfolgenwert zurück.
  • Wenn für match_parameter widersprüchliche Werte angegeben werden, verwendet die Funktion REGEXP_REPLACE den letzten Wert.
  • Siehe auch die REPLACE-Funktion.

Gilt für

Die Funktion REGEXP_REPLACE kann in den folgenden Versionen von Oracle/PLSQL verwendet werden:

  • Oracle 12c, Oracle 11g, Oracle 10g

Beispiel – Übereinstimmung beim ersten Wort

Beginnen wir mit der Funktion REGEXP_REPLACE, um das erste Wort in einer Zeichenfolge zu ersetzen.

Beispielsweise:

In diesem Beispiel wird ‚Google is a great search engine.‘ zurückgegeben, da der Abgleich am Anfang des durch ^ angegebenen Strings beginnt und dann das erste Wort wie (\S*) angegeben wird. Die Funktion ersetzt dann dieses erste Wort mit ‚Google‘.

Beispiel – Übereinstimmung von Ziffern

Als Nächstes wollen wir uns ansehen, wie wir die Funktion REGEXP_REPLACE verwenden, um ein einziges Ziffernmuster abzugleichen.

Beispielsweise:

In diesem Beispiel werden alle numerischen Ziffern in der Zeichenfolge durch \d ersetzt. Die Vorkommen werden durch ein @ -Zeichen ersetzt.

Wir könnten unser Muster ändern, um nur nach zweistelligen Zahlen zu suchen.

Beispielsweise:

In diesem Beispiel wird eine Zahl ersetzt, die nebeneinander zwei Ziffern enthält, wie durch (\d)(\d) angegeben. In diesem Fall werden die numerischen Werte 1 und 4 übersprungen und 10 durch ein @ -Zeichen ersetzt.

Schauen wir uns nun an, wie wir die Funktion REGEXP_REPLACE mit einer Tabellenspalte verwenden, um zweistellige Zahlen zu ersetzen.

Beispielsweise:

In diesem Beispiel werden wir alle zweistelligen Werte aus dem Feld address in der contacts durch den Wert ‚Str‘.

Beispiel – Übereinstimmung mit mehr als einer Alternative

Das nächste Beispiel, das wir betrachten werden, bezieht sich auf die Verwendung von | Muster. Die | Muster wird wie ein „ODER“ verwendet, um mehrere Alternativen anzugeben.

Beispielsweise:

In diesem Beispiel wird ‚ARrRSmRth‘ zurückgegeben, da nach dem ersten Vokal (a, e, i, o oder u) in der Zeichenfolge gesucht wird. Da wir keinen Wert für match_parameter angegeben haben, führt die Funktion REGEXP_REPLACE eine Groß- / Kleinschreibung durch, was bedeutet, dass ‚A‘ in ‚AeroSmith‘ nicht übereinstimmt.

Wir könnten unsere Abfrage wie folgt ändern, um eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung wie folgt durchzuführen:

Da wir nun einen match_parameter von ‚i‘ angegeben haben, wird die Abfrage ‚A‘ im String ersetzen. Dieses Mal wird das ‚A‘ in ‚AeroSmith‘ als Übereinstimmung gefunden. Beachten Sie auch, dass wir als fünften Parameter 0 angegeben haben, damit alle Vorkommen ersetzt werden.

Lassen Sie uns nun schnell zeigen, wie Sie diese Funktion mit einer Spalte verwenden würden.

Nehmen wir an, wir haben eine Tabelle contact mit folgenden Daten:

contact_id last_name
1000 AeroSmith
2000 Joy
3000 Scorpions

Lassen Sie uns nun die folgende Abfrage ausführen:

Dies sind die Ergebnisse, die von der Abfrage zurückgegeben würden:

contact_id last_name New Name
1000 AeroSmith RRrRSmRth
2000 Joy JRy
3000 Scorpions ScRrpRRns

Beispiel – Übereinstimmung bei nth_occurrence

Das nächste Beispiel, das wir uns ansehen werden, betrifft den Parameter nth_occurrence. Mit dem Parameter nth_occurrence können Sie auswählen, welches Vorkommen des Musters in der Zeichenfolge ersetzt werden soll.

Erstes Vorkommen

Sehen wir uns an, wie Sie das erste Vorkommen eines Musters in einer Zeichenfolge ersetzen können.

Beispielsweise:

Dieses Beispiel ersetzt das dritte Zeichen (‚e‘) in ‚Scorpions‘, da es das erste Vorkommen eines Vokals (a, e, i, o oder u) in der Zeichenfolge ersetzt.

Zweites Vorkommen

Als Nächstes extrahieren wir das zweite Vorkommen eines Musters in einer Zeichenfolge.

Beispielsweise:

Dieses Beispiel ersetzt das dritte Zeichen (‚e‘) in ‚Scorpions‘, da es das erste Vorkommen des Vokals (a, e, i, o oder u) in der Zeichenfolge ersetzt.

Drittes Vorkommen

Beispielsweise:

Dieses Beispiel ersetzt das siebte Zeichen (‚o‘) in ‚Scorpions‘, da es das dritte Vorkommen des Vokals (a, e, i, o oder u) in der Zeichenfolge ersetzt.