Funzione REGEXP_INSTR - AWS Clean Rooms

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_INSTR

Cerca una stringa per un modello di espressione regolare e restituisce un integer che indica la posizione iniziale o finale della sottostringa corrispondente. Se non viene trovata alcuna corrispondenza, la funzione restituisce 0. REGEXP_INSTR è simile alla funzione POSITION, ma consente di cercare una stringa per un modello di espressione regolare.

Sintassi

REGEXP_INSTR ( source_string, pattern [, position [, occurrence] [, option [, parameters ] ] ] ] )

Argomenti

source_string

Un'espressione di stringa, come ad esempio un nome di colonna, da cercare.

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 è 0.

occorrenza

Un integer positivo che indica quale occorrenza del modello utilizzare. REGEXP_INSTR 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 è 0.

option

Un valore che indica se restituire la posizione del primo carattere della corrispondenza (0) o la posizione del primo carattere dopo la fine della corrispondenza (1). Un valore diverso da zero equivale a 1. Il valore predefinito è 0.

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_INSTR corrisponde a una sottostringa che utilizza la prima sottoespressione in modello. REGEXP_INSTR considera solo la prima sottoespressione; le sottoespressioni aggiuntive vengono ignorate. Se il modello non ha una sottoespressione, REGEXP_INSTR ignora il parametro "e".

  • p: interpreta il modello con il dialetto Perl Compatible Regular Expression (PCRE).

Tipo restituito

Numero intero

Esempio

Nell'esempio seguente viene cercato il carattere @ che inizia un nome di dominio e restituisce la posizione iniziale della prima corrispondenza.

SELECT email, regexp_instr(email, '@[^.]*') FROM users ORDER BY userid LIMIT 4; email | regexp_instr -----------------------------------------------+-------------- Etiam.laoreet.libero@example.com | 21 Suspendisse.tristique@nonnisiAenean.edu | 22 amet.faucibus.ut@condimentumegetvolutpat.ca | 17 sed@lacusUtnec.ca | 4

Nell'esempio seguente vengono cercate le varianti della parola Center e viene restituita la posizione iniziale della prima corrispondenza.

SELECT venuename, regexp_instr(venuename,'[cC]ent(er|re)$') FROM venue WHERE regexp_instr(venuename,'[cC]ent(er|re)$') > 0 ORDER BY venueid LIMIT 4; venuename | regexp_instr -----------------------+-------------- The Home Depot Center | 16 Izod Center | 6 Wachovia Center | 10 Air Canada Centre | 12

Nell'esempio seguente viene trovata la posizione iniziale della prima ricorrenza della stringa FOX utilizzando una logica di associazione senza distinzione tra maiuscole e minuscole.

SELECT regexp_instr('the fox', 'FOX', 1, 1, 0, 'i'); regexp_instr -------------- 5

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 trovata la posizione iniziale della seconda parola di questo tipo.

SELECT regexp_instr('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'p'); regexp_instr -------------- 21

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 trovata la posizione iniziale della seconda parola, ma differisce dall'esempio precedente in quanto utilizza la corrispondenza senza distinzione tra maiuscole e minuscole.

SELECT regexp_instr('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'ip'); regexp_instr -------------- 15