Reguliere vastleggingsgroepen
U kunt een paar haakjes rond een subpatroon in een reguliere expressie gebruiken om een
groep ''
te definiëren. U kunt reguliere expressiegroepen gebruiken om:- Reguliere operatoren en kwantoren toepassen op een hele groep tegelijk.
- Maak een vastleggingsgroep.U kunt groepen vastleggen om matchende waarden op te geven die u wilt opslaan of retourneren vanuit uw reguliere expressie. Standaardlegteen groep de tekst vast die een match oplevert. Het gedeelte van de tekenreeks dat overeenkomt met de gegroepeerde subexpressie wordt in het geheugen vastgelegd om later op te halen of te gebruiken.
- Maak een niet-vastleggende groep.
Groepsnummering
Een reguliere expressie kan meer dan één groep hebben en de groepen kunnen worden genest. De groepen worden van links naar rechts genummerd van 1-
n
, te beginnen bij het eerste haakje openen. Er is altijd een impliciete groep nul (0), die de hele match bevat. Voorbeeld:(a(b*))+(c)
Dit patroon bevat drie groepen:
group 1: (a(b*)) group 2: (b*) group 3: (c)
Groepen vastleggen en de REGEX-functie
U kunt de gebruiken
REGEX
functie om een gedeelte van een tekenreeks te extraheren. De REGEX
functie retourneert alleen de waarde van de eerste
vastleggingsgroep.Stel dat u een veldnaam hebt met de naam
e-mail
die e-mailadressen bevat met dit patroon: gebruikersnaam
@provider
.domein
. U kunt de gebruiken REGEX
functie om alleen het aanbiedergedeelte
van het e-mailadres uit het e-
mailveld te retourneren:REGEX([email],"^[a-zA-Z0-9._%+-]+@
([a-zA-Z0-9._-]+)
\.[a-zA-Z]{2,4}$")Groepen en de functie REGEX_REPLACE vastleggen
U kunt de gebruiken
REGEX_REPLACE
functie om een tekenreeks te matchen en de gematchte tekenreeksen te vervangen door een andere waarde. De REGEX_REPLACE
functie heeft 3 argumenten:- Invoertekenreeks
- Matchende reguliere expressie
- Vervangende reguliere expressie
U kunt vastleggroepen gebruiken om terugverwijzingen vast te leggen, maar de volledige match wordt altijd geretourneerd.
Groepen en terugverwijzingen vastleggen
U kunt een terugverwijzing gebruiken om terug te verwijzen naar de gematchte inhoud van een bepaald vastleggingsgroepsnummer. Doorgaans gebruikt u een terugverwijzing in dezelfde reguliere expressie die de vastleggroep bevat. U geeft een terugverwijzing op door te verwijzen naar het groepsnummer, voorafgegaan door een backslash. Gebruiken
\1
om te verwijzen naar vastleggingsgroep 1, \2
om te verwijzen naar vastleggingsgroep 2, enzovoort.Stel dat u een paar HTML-tags en de bijbehorende ingesloten tekst wilt matchen. U kunt de begintag vastleggen in een vastleggingsgroep en vervolgens een terugverwijzing gebruiken om de bijbehorende sluitingstag te matchen:
(<([A-Z][A-Z0-9]*)\b[^>]*>.*?</\2>)
Deze reguliere expressie bevat twee vastleggingsgroepen:
- Groep 1 bevat de buitenste haakjes en legt de hele tekenreeks vast.
- Groep 2 legt de tekenreeks vast die overeenkomt met[A-Z][A-Z0-9]*.
U kunt vervolgens naar groep 2 verwijzen met behulp van de
\2
terugverwijzing zodat deze matcht met de bijbehorende afsluitende HTML-tag. Wanneer u de gebruikt
REGEX_REPLACE
functie, kunt u een terugverwijzing gebruiken om te verwijzen naar een vastleggingsgroep in de vorige
reguliere expressie. De syntaxis is iets anders wanneer u een terugverwijzing gebruikt om naar een groep in de vorige reguliere expressie te verwijzen. Gebruik een dollarteken ($
) vóór het groepsnummer, zoals $1
om een terugverwijzing naar groep 1 van de vorige expressie op te geven. Stel dat u een veld
phone_number
hebt waarvan de waarden zijn opgemaakt als xxx.xxx.xxxx
. In het volgende voorbeeld worden de waarden in telefoonnummer
weergegeven en vervangen door waarden met de notatie (xxx)
xxx-xxxx
:REGEX_REPLACE([phone_number],"([0-9]{3})\.([[0-9]]{3})\.([[0-9]]{4})","\($1\) $2-$3")
Let op de terugverwijzingen in de vervangende expressie. Ze verwijzen naar de vastleggroepen van de vorige matchexpressie.
Niet-vastleggende groepen
In sommige gevallen wilt u mogelijk haakjes gebruiken om subpatronen te groeperen, maar
niet
om tekst vast te leggen. Een niet-vastleggende groep begint met (?:
(een vraagteken en een dubbele punt na het haakje openen). Bijvoorbeeld h(?:a|i|o)t
matches hat
of hit
of hot
, maar legt niet de vast a
, i
, of o
uit de subexpressie.