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à.
REGEXPSUBSTRfunzione _
Restituisce i caratteri da una stringa cercando un modello di espressione regolare. REGEXP_ SUBSTR è simile alla SUBSTRINGfunzione funzione, ma consente di cercare in una stringa 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. Per ulteriori informazioni sulle espressioni regolari, vedi POSIXoperatori Espressione regolare
Sintassi
REGEXP_SUBSTR( source_string, pattern [, position [, occurrence [, parameters ] ] ] )
Argomenti
- source_string
-
Un'espressione della stringa da ricercare.
- pattern
-
Un valore letterale a UTF -8 stringhe che rappresenta un modello di espressione regolare. Per ulteriori informazioni, consulta POSIXoperatori.
- 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 la prima occorrenza -1 corrispondenze. Il valore di default è 1. Se l'occorrenza è minore di 1 o maggiore del 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 pattern include una sottoespressione, REGEXP _ SUBSTR corrisponde a una sottostringa utilizzando la prima sottoespressione in pattern. 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 pattern, REGEXP _ SUBSTR con ile
parametro restituisce solo la stringa all'interno della sottoespressione.REGEXP_ SUBSTR considera solo la prima sottoespressione; le sottoespressioni aggiuntive vengono ignorate. Se il pattern non ha una sottoespressione, REGEXP _ SUBSTR ignora il parametro 'e'.
-
p — Interpreta il pattern con il dialetto Perl Compatible Regular Expression ()PCRE. Per ulteriori informazioni suPCRE, vedete Perl Compatible Regular Expressions
in Wikipedia.
-
Tipo restituito
VARCHAR
Esempi
L'esempio seguente restituisce la porzione di un indirizzo email tra il carattere @ e l'estensione del dominio. I dati users
richiesti provengono dai dati di esempio di Amazon Redshift. Per ulteriori informazioni, consulta Database di esempio.
SELECT email, regexp_substr(email,'@[^.]*') FROM users ORDER BY userid LIMIT 4;
email | regexp_substr -----------------------------------------------+-------------------------- Suspendisse.tristique@nonnisiAenean.edu | @nonnisiAenean amet.faucibus.ut@condimentumegetvolutpat.ca | @condimentumegetvolutpat sed@lacusUtnec.ca | @lacusUtnec Cum@accumsan.com | @accumsan
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
Nell'esempio seguente viene restituita la porzione dell'input corrispondente alla seconda occorrenza della stringa FOX
utilizzando una corrispondenza senza distinzione tra maiuscole e minuscole. Il risultato è NULL
(vuoto) perché non esiste una seconda occorrenza.
SELECT regexp_substr('the fox', 'FOX', 1, 2, 'i');
regexp_substr ---------------
L'istruzione di esempio seguente restituisce la prima parte dell'input che inizia con lettere minuscole. Dal punto di vista funzionale è identica alla stessa SELECT istruzione senza il c
parametro.
SELECT regexp_substr('THE SECRET CODE IS THE LOWERCASE PART OF 1931abc0EZ.', '[a-z]+', 1, 1, 'c');
regexp_substr --------------- abc
L'esempio seguente utilizza uno schema scritto in PCRE dialetto per individuare le parole contenenti almeno un numero e una lettera minuscola. Utilizza l'?=
operatore, che ha una connotazione specifica di look-ahead 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
L'esempio seguente utilizza uno schema scritto in PCRE dialetto per individuare le parole contenenti almeno un numero e una lettera minuscola. Utilizza l'?=
operatore, che ha una connotazione specifica di look-ahead 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