Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Funzione REGEXP_SUBSTR
Restituisce i caratteri da una stringa cercando un modello di espressione regolare. REGEXP_SUBSTR è simile alla funzione Funzione SUBSTRING ma consente di cercare una stringa per un modello di espressione regolare. Se la funzione non riesce a far corrispondere l'espressione regolare ad alcun carattere della stringa, restituisce una stringa vuota.
Sintassi
REGEXP_SUBSTR ( source_string, pattern [, position [, occurrence [, parameters ] ] ] )
Argomenti
- source_string
-
Un'espressione della stringa da ricercare.
- pattern
-
Un valore letterale di stringa che rappresenta un modello di espressione regolare.
- posizione
-
Un integer positivo che indica la posizione all'interno di source_string per iniziare la ricerca. La posizione si basa sul numero di caratteri, non di byte, pertanto i caratteri multibyte vengono contati come caratteri singoli. Il valore di default è 1. Se posizione è inferiore a 1, la ricerca inizia con il primo carattere di source_string. Se posizione è maggiore rispetto al numero di caratteri in source_string, il risultato è una stringa vuota ("").
- occorrenza
-
Un integer positivo che indica quale occorrenza del modello utilizzare. REGEXP_SUBSTR salta le prime corrispondenze occorrenza -1. Il valore di default è 1. Se occorrenza è inferiore a 1 oppure maggiore rispetto al numero di caratteri in source_string, la ricerca viene ignorata e il risultato è NULL.
- parameters
-
Uno o più letterali di stringa che indicano come la funzione corrisponde al modello. Di seguito sono riportati i valori possibili:
-
c: eseguire una corrispondenza in base a maiuscole e minuscole. L'impostazione predefinita è utilizzare la corrispondenza con distinzione tra maiuscole e minuscole.
-
i: eseguire una corrispondenza senza distinzione tra maiuscole e minuscole.
-
e: estrarre una sottostringa usando una sottoespressione.
Se modello include una sottoespressione, REGEXP_SUBSTR corrisponde a una sottostringa che utilizza la prima sottoespressione in modello. Un'espressione secondaria è un'espressione all'interno del modello racchiusa tra parentesi. Ad esempio, per il modello
'This is a (\\w+)'
corrisponde alla prima espressione con la stringa'This is a '
seguita da una parola. Invece di restituire un modello, REGEXP_SUBSTR con il parametroe
restituisce solo la stringa all'interno dell'espressione secondaria.REGEXP_SUBSTR considera solo la prima sottoespressione; le sottoespressioni aggiuntive vengono ignorate. Se il modello non ha una sottoespressione, REGEXP_SUBSTR ignora il parametro "e".
-
p: interpreta il modello con il dialetto Perl Compatible Regular Expression (PCRE).
-
Tipo restituito
VARCHAR
Esempio
L'esempio seguente restituisce la porzione di un indirizzo email tra il carattere @ e l'estensione del dominio.
SELECT email, regexp_substr(email,'@[^.]*') FROM users ORDER BY userid LIMIT 4; email | regexp_substr -----------------------------------------------+-------------------------- Etiam.laoreet.libero@sodalesMaurisblandit.edu | @sodalesMaurisblandit Suspendisse.tristique@nonnisiAenean.edu | @nonnisiAenean amet.faucibus.ut@condimentumegetvolutpat.ca | @condimentumegetvolutpat sed@lacusUtnec.ca | @lacusUtnec
Nell'esempio seguente viene restituita la porzione dell'input corrispondente alla prima ricorrenza della stringa FOX
utilizzando una corrispondenza senza distinzione tra maiuscole e minuscole.
SELECT regexp_substr('the fox', 'FOX', 1, 1, 'i'); regexp_substr --------------- fox
L'istruzione di esempio seguente restituisce la prima parte dell'input che inizia con lettere minuscole. Dal punto di vista funzionale è identica alla medesima istruzione SELECT senza il parametro c
.
SELECT regexp_substr('THE SECRET CODE IS THE LOWERCASE PART OF 1931abc0EZ.', '[a-z]+', 1, 1, 'c'); regexp_substr --------------- abc
Nell'esempio seguente viene utilizzato un modello scritto in dialetto PCRE per individuare le parole contenenti almeno un numero e una lettera minuscola. Utilizza l'operatore ?=
, che ha una connotazione look-ahead specifica in PCRE. In questo esempio viene restituita la parte dell'input corrispondente alla seconda parola di questo tipo.
SELECT regexp_substr('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 'p'); regexp_substr --------------- a1234
Nell'esempio seguente viene utilizzato un modello scritto in dialetto PCRE per individuare le parole contenenti almeno un numero e una lettera minuscola. Utilizza l'operatore ?=
, che ha una connotazione look-ahead specifica in PCRE. In questo esempio viene restituita la parte di input corrispondente alla seconda parola, ma differisce dall'esempio precedente in quanto si utilizza la corrispondenza senza distinzione tra maiuscole e minuscole.
SELECT regexp_substr('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 'ip'); regexp_substr --------------- A1234
L'esempio seguente utilizza un'espressione secondaria per trovare la seconda stringa che corrisponde al modello 'this is a (\\w+)'
utilizzando la corrispondenza senza distinzione tra maiuscole e minuscole. Restituisce l'espressione secondaria tra parentesi.
select regexp_substr( 'This is a cat, this is a dog. This is a mouse.', 'this is a (\\w+)', 1, 2, 'ie'); regexp_substr --------------- dog