Zum Hauptinhalt wechseln
Workday User Guide
Zuletzt aktualisiert: 2023-06-23
Regex-Erfassungsgruppen

Regex-Erfassungsgruppen

Sie können ein Untermuster in einem regulären Ausdruck mithilfe von Klammern verwenden, um eine
Gruppe
von zu definieren. Sie können Regex-Gruppen für folgende Zwecke verwenden:
  • Wenden Sie Regex-Operatoren und Quantifizierer gleichzeitig auf eine ganze Gruppe an.
  • Erstellen Sie eine Erfassungsgruppe.
    Sie können Erfassungsgruppen verwenden, um übereinstimmende Werte anzugeben, die gespeichert oder aus Ihrem regulären Ausdruck zurückgegeben werden sollen. Standardmäßig
    erfasst
    eine Gruppe den Text, der eine Übereinstimmung erzeugt. Der Teil der Zeichenfolge, der mit dem gruppierten Unterausdruck übereinstimmt, wird für den späteren Abruf oder die spätere Verwendung im Speicher erfasst.
  • Erstellen Sie eine Nicht-Erfassungsgruppe.

Gruppennummerierung

Ein regulärer Ausdruck kann mehr als eine Gruppe haben und die Gruppen können verschachtelt sein. Die Gruppen sind von links nach rechts mit 1-
n
nummeriert, beginnend mit der ersten öffnenden Klammer. Es gibt immer eine implizite Gruppe 0 (0), die die gesamte Übereinstimmung enthält. Beispiel:
(a(b*))+(c)
Dieses Muster enthält 3 Gruppen:
group 1: (a(b*)) group 2: (b*) group 3: (c)

Erfassungsgruppen und REGEX-Funktion

Sie können die verwenden
REGEX
-Funktion, um einen Teil einer Zeichenfolge zu extrahieren. Die
REGEX
Die Funktion "" gibt nur den Wert der
ersten
Erfassungsgruppe zurück.
Angenommen, Sie haben ein Feldname mit dem Namen
email
, das E-Mail-Adressen mit diesem Muster enthält:
Benutzername
@
Anbieter
.
Domäne
. Sie können die verwenden
REGEX
Funktion, um nur den
Anbieterteil
der E-Mail-Adresse aus dem Feld
„E-Mail“
zurückzugeben:
REGEX([email],"^[a-zA-Z0-9._%+-]+@
([a-zA-Z0-9._-]+)
\.[a-zA-Z]{2,4}$")

Erfassungsgruppen und die Funktion REGEX_REPLACE

Sie können die verwenden
REGEX_REPLACE
-Funktion, um eine Zeichenfolge abzugleichen und übereinstimmende Zeichenfolgen durch einen anderen Wert zu ersetzen. Die
REGEX_REPLACE
Die -Funktion übernimmt drei Argumente:
  • Eingabezeichenfolge
  • Übereinstimmende Regex
  • Ersatz-Regex
Sie können Erfassungsgruppen verwenden, um Rückreferenzen zu erfassen, aber es wird immer die gesamte Übereinstimmung zurückgegeben.

Erfassungsgruppen und Rückreferenzen

Sie können einen Rückbezug verwenden, um auf den übereinstimmenden Inhalt einer bestimmten Erfassungsgruppennummer zu verweisen. In der Regel verwenden Sie einen Rückbezug im selben regulären Ausdruck, der die Erfassungsgruppe enthält. Sie geben einen Rückbezug an, indem Sie sich auf die Gruppennummer beziehen, der ein umgekehrter Schrägstrich vorangestellt ist. Verwenden
\1
bezieht sich auf Erfassungsgruppe 1,
\2
"" bezieht sich auf Erfassungsgruppe 2 usw.
Angenommen, Sie möchten ein Paar HTML-Tags und den zugehörigen Text abgleichen. Sie könnten das öffnende Tag in einer Erfassungsgruppe erfassen und dann mithilfe eines Rückbezugs das entsprechende schließende Tag abgleichen:
(
<
([A-Z][A-Z0-9]*)
\b[^>]*>.*?</
\2
>
)
Dieser reguläre Ausdruck enthält zwei Erfassungsgruppen:
  • Gruppe 1 enthält die außen liegenden Klammern und erfasst die gesamte Zeichenfolge.
  • Gruppe 2 erfasst die Zeichenfolge, mit der übereinstimmt
    [A-Z][A-Z0-9]*
    .
Sie können sich dann mit auf Gruppe 2 beziehen
\2
Rückreferenz auf das entsprechende schließende HTML-Tag.
Bei Verwendung von
REGEX_REPLACE
-Funktion, können Sie einen Rückbezug verwenden, um auf eine Erfassungsgruppe im
vorherigen
regulären Ausdruck zu verweisen. Die Syntax ändert sich geringfügig, wenn Sie einen Rückbezug verwenden, um auf eine Gruppe in der vorherigen Regex zu verweisen. Verwenden Sie ein Dollarzeichen ()
$
) vor der Gruppennummer, z. B
$1
, um einen Rückbezug auf Gruppe 1 des vorherigen Ausdrucks anzugeben.
Angenommen, Sie haben ein Feld
phone_number
, in dem die Werte wie folgt formatiert sind:
xxx.xxx.xxxx
. Im folgenden Beispiel werden die Werte in
phone_number
mit folgenden Werten abgeglichen:
(xxx) xxx-xxxx
:
REGEX_REPLACE([phone_number],"([0-9]{3})\.([[0-9]]{3})\.([[0-9]]{4})","
\($1\) $2-$3
")
Beachten Sie die Rückreferenzen im Ersatzausdruck. Sie verweisen auf die Erfassungsgruppen des vorherigen übereinstimmenden Ausdrucks.

Nicht erfassende Gruppen

In einigen Fällen möchten Sie möglicherweise Klammern verwenden, um Untermuster zu gruppieren, aber
keinen
Text zu erfassen. Eine Gruppe ohne Erfassung beginnt mit
(?:
(Fragezeichen und Doppelpunkt nach der öffnenden Klammer.) Beispiel:
h(?:a|i|o)t
Übereinstimmungen
hat
oder
hit
oder
hot
, erfasst jedoch nicht
a
,
i
, oder
o
aus dem Unterausdruck.