Fonction REGEXP_INSTR - AWS Clean Rooms

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Fonction REGEXP_INSTR

Recherche un modèle d’expression régulière dans une chaîne et renvoie un nombre entier qui indique la position de début de la sous-chaîne correspondante. Si aucune correspondance n'est trouvée, la fonction renvoie 0. REGEXP_SUBSTR est similaire à la fonction POSITION, mais vous permet de rechercher un modèle d’expression régulière dans une chaîne.

Syntaxe

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

Arguments

source_string

Expression de chaîne, comme un nom de colonne, à rechercher.

pattern

Chaîne littérale qui représente un modèle d’expression régulière.

position

Nombre entier positif qui indique à quel endroit de source_string commencer la recherche. La position est basée sur le nombre de caractères, pas d’octets, de sorte que les caractères à plusieurs octets soient comptés comme des caractères seuls. La valeur par défaut est 1. Si position est inférieur à 1, la recherche commence au premier caractère de source_string. Si position est supérieur au nombre de caractères de source_string, le résultat est 0.

occurrence

Nombre entier positif qui indique quelle occurrence du modèle utiliser. REGEXP_INSTR ignore les occurrence -1 premières correspondances. La valeur par défaut est 1. Si occurrence est inférieur à 1 ou supérieur au nombre de caractères de la chaîne source_string, la recherche est ignorée et le résultat est 0.

option

Valeur qui indique s'il faut renvoyer la position du premier caractère de la correspondance (0) ou celle du premier caractère après la fin de la correspondance (1). Toute valeur de chaîne autre que zéro est similaire à la valeur 1. La valeur par défaut est 0.

parameters

Un ou plusieurs littéraux de chaîne qui indiquent comment la fonction correspond au modèle. Les valeurs possibles sont les suivantes :

  • c : réaliser une correspondance avec respect de la casse. Par défaut, la correspondance avec respect de la casse est utilisée.

  • i : réaliser une correspondance avec non-respect de la casse.

  • e : extraire une sous-chaîne à l’aide d’une sous-expression.

    Si pattern inclut une sous-expression, REGEXP_INSTR met en correspondance une sous-chaîne à l’aide de la première sous-expression incluse dans pattern. REGEXP_INSTR considère uniquement la première sous-expression ; les autres sous-expressions sont ignorées. Si le modèle n’inclut pas de sous-expression, REGEXP_INSTR ignore le paramètre « e ».

  • p – Interpréter le modèle avec le type d’expression PCRE (Perl Compatible Regular Expression).

Type de retour

Entier

Exemple

L'exemple suivant recherche le caractère @ qui commence par un nom de domaine et renvoie la position de début de la première correspondance.

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

L'exemple suivant recherche des variantes du mot Center et renvoie la position du début de la première correspondance.

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

L'exemple suivant recherche la position de départ de la première occurrence de la chaîne FOX, à l'aide d'une logique de correspondance avec respect de la casse.

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

L'exemple suivant utilise un modèle écrit en PCRE pour localiser des mots contenant au moins un chiffre et une lettre minuscule. Il utilise l'opérateur ?=, qui a une connotation « anticipée » spécifique au type PCRE. Cet exemple montre comment trouver la position de départ du deuxième mot de ce type.

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

L'exemple suivant utilise un modèle écrit en PCRE pour localiser des mots contenant au moins un chiffre et une lettre minuscule. Il utilise l'opérateur ?=, qui a une connotation « anticipée » spécifique au type PCRE. Cet exemple recherche la position de départ du deuxième mot de ce type, mais diffère de l’exemple précédent car il utilise une correspondance avec non-respect de la casse.

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