REGEX
Descrizione
REGEX
è una funzione di riga che esegue una corrispondenza di intera stringa con a TEXT
value con un'espressione regolare e restituisce la parte della stringa corrispondente al primo gruppo di acquisizione dell'espressione regolare.Sintassi
REGEX
(string_expression
,"regex_matching_pattern
")Valore restituito
Restituisce la corrispondenza
TEXT
valore del primo gruppo di acquisizione dell'espressione regolare. Se non è presente alcuna corrispondenza, restituisce NULL
. Parametri di input
- string_expression
- Sono obbligatori. Il nome di un campo o di un'espressione di tipoTEXT(o una stringa letterale).
- regex_matching_pattern
- Sono obbligatori. Un modello di espressione regolare basato sulla sintassi di corrispondenza del modello di espressione regolare del linguaggio di programmazione Java. Per restituire un valore diverso da NULL, il modello dell'espressione regolare deve corrispondere all'interoTEXTvalore
Costrutti espressione regolare
Consultare i riferimenti alle espressioni regolari per informazioni sui costrutti utilizzati per definire un modello di corrispondenza delle espressioni regolari.
Gruppi di acquisizione e non di acquisizione
I gruppi sono specificati da una coppia di parentesi attorno a un modello secondario nell'espressione regolare. Un modello può avere più di un gruppo e i gruppi possono essere nidificati. I gruppi sono numerati da 1
a n
da sinistra a destra, a partire dalla prima parentesi aperta. È sempre presente un gruppo implicito 0, che contiene l'intera corrispondenza. Ad esempio, il modello: (a(b*))+(c)
contiene tre gruppi:
group 1: (a(b*)) group 2: (b*) group 3: (c)
Acquisizione di gruppi
Per impostazione predefinita, un gruppo
acquisisce
il testo che genera una corrispondenza e viene acquisita solo la corrispondenza più recente. Il REGEX
La funzione restituisce la stringa che corrisponde al primo gruppo di acquisizione nell'espressione regolare. Ad esempio, se la stringa di input per l'espressione precedente era abc
, l'intero REGEX
la funzione corrisponderebbe a abc
, ma restituisce solo il risultato del gruppo 1, ovvero ab
. Gruppi non di acquisizione
In alcuni casi, è possibile utilizzare le parentesi per raggruppare i sottomodelli, ma non per acquisire il testo. Un gruppo non di acquisizione inizia con
(?:
(un punto interrogativo e due punti dopo la parentesi aperta). Ad esempio, h(?:a|i|o)t
corrispondenze hat
o hit
o hot
, ma non acquisisce il a
, i
, o o
dalla sottoespressione. Esempi
Abbina tutti i possibili indirizzi e-mail con uno schema di
nome utente
@provider
.domain
, ma restituisce solo la parte del provider
dell'indirizzo e-mail dal campo e-mail
:REGEX([email], "^[a-zA-Z0-9._%+-]+@
([a-zA-Z0-9._-]+)
\.[a-zA-Z]{2,4}$")Abbina la riga di richiesta di un registro Web, in cui il valore ha il formato:
e restituiscono solo i nomi di pagina HTML richiesti:GET /some_page.html HTTP/1.1
REGEX([weblog_request_line], "GET\s/
([a-zA-Z0-9._%-]+\.[html])
\sHTTP/[0-9.]+")Estrarre la parte in pollici da a
height
campo in cui si trovano i valori di esempio 6'2"
, 5'11"
(notare l'escape della virgoletta letterale con virgolette doppie):REGEX([height], "\d\'(\d)+""")
Estrarre tutto il contenuto di
device
quando il valore è uno dei due iPod
, iPad
, o iPhone
:REGEX([device], "(iP[ao]d|iPhone)")