Fonction REGEXP_COUNT - 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_COUNT

Recherche un modèle d’expression régulière dans une chaîne et renvoie un nombre entier indiquant le nombre de fois où le modèle est présent dans la chaîne. Si aucune correspondance n'est trouvée, la fonction renvoie 0.

Syntaxe

REGEXP_COUNT ( source_string, pattern [, position [, 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.

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.

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

Type de retour

Entier

Exemple

L'exemple suivant compte le nombre de fois que se produit une séquence de trois lettres.

SELECT regexp_count('abcdefghijklmnopqrstuvwxyz', '[a-z]{3}'); regexp_count -------------- 8

L'exemple suivant compte le nombre de fois que le nom de domaine de niveau supérieur est org ou edu.

SELECT email, regexp_count(email,'@[^.]*\\.(org|edu)')FROM users ORDER BY userid LIMIT 4; email | regexp_count -----------------------------------------------+-------------- Etiam.laoreet.libero@sodalesMaurisblandit.edu | 1 Suspendisse.tristique@nonnisiAenean.edu | 1 amet.faucibus.ut@condimentumegetvolutpat.ca | 0 sed@lacusUtnec.ca | 0

L'exemple suivant compte les occurrences de la chaîne FOX, en utilisant une correspondance avec respect de la casse.

SELECT regexp_count('the fox', 'FOX', 1, 'i'); regexp_count -------------- 1

L'exemple suivant utilise un modèle écrit dans le type 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 compte le nombre d'occurrences de ces mots, avec une correspondance avec respect de la casse.

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

L'exemple suivant utilise un modèle écrit dans le type PCRE pour localiser des mots contenant au moins un chiffre et une lettre minuscule. Il utilise l'opérateur ?=, qui a une connotation spécifique au type PCRE. Cet exemple compte le nombre d'occurrences de ces mots, mais diffère de l'exemple précédent car il utilise une correspondance avec non-respect de la casse.

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