

 Amazon Redshift ne prendra plus en charge la création de nouveaux Python à UDFs partir du patch 198. UDFs Le Python existant continuera de fonctionner jusqu'au 30 juin 2026. Pour plus d’informations, consultez le [ billet de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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\$1INSTR
<a name="REGEXP_INSTR"></a>

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\$1SUBSTR est similaire à la fonction [POSITION](r_POSITION.md), mais vous permet de rechercher un modèle d’expression régulière dans une chaîne. Pour plus d’informations sur les expressions régulières, consultez [Opérateurs POSIX](pattern-matching-conditions-posix.md) et [Expression régulière](https://en.wikipedia.org/wiki/Regular_expression) sur Wikipedia.

## Syntaxe
<a name="REGEXP_INSTR-synopsis"></a>

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

## Arguments
<a name="REGEXP_INSTR-arguments"></a>

 *source\$1string*   
Expression de chaîne, comme un nom de colonne, à rechercher. 

 *pattern*   
Chaîne littérale UT-8 qui représente un modèle d’expression régulière. Pour plus d’informations, consultez [Opérateurs POSIX](pattern-matching-conditions-posix.md).

 *position*   
(Facultatif) `INTEGER` positif qui indique la position dans *source\$1string* où 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\$1string*. Si *position* est supérieur au nombre de caractères de *source\$1string*, le résultat est `0`.

 *occurrence*   
(Facultatif) `INTEGER` positif qui indique quelle occurrence du modèle utiliser. REGEXP\$1INSTR 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 dans *source\$1string*, la recherche est ignorée et le résultat est `0`.

 *option*   
(Facultatif) 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`). Une valeur non nulle est identique à `1`. La valeur par défaut est `0`. 

 *parameters*   
(Facultatif) 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\$1INSTR met en correspondance une sous-chaîne à l’aide de la première sous-expression incluse dans *pattern*. REGEXP\$1INSTR 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\$1INSTR ignore le paramètre « e ». 
+ p – Interpréter le modèle avec le type d’expression PCRE (Perl Compatible Regular Expression). Pour plus d’informations sur les PCRE, consultez [Expressions régulières compatibles avec Perl](https://en.wikipedia.org/wiki/Perl_Compatible_Regular_Expressions) sur Wikipedia.

## Type de retour
<a name="REGEXP_INSTR-return-type"></a>

Entier

## Exemples
<a name="REGEXP_INSTR-examples"></a>

Les exemples suivants utilisent les données de la table USERS de l’exemple de base de données TICKIT. Pour plus d’informations, consultez [Exemple de base de données](c_sampledb.md). 

Pour rechercher le caractère `@` qui commence un nom de domaine et renvoyer la position de début de la première correspondance, utilisez l’exemple suivant.

```
SELECT email, REGEXP_INSTR(email, '@[^.]*')
FROM users
ORDER BY userid LIMIT 4;

+-----------------------------------------------+--------------+
|                     email                     | regexp_instr |
+-----------------------------------------------+--------------+
| Etiam.laoreet.libero@sodalesMaurisblandit.edu |           21 |
| Suspendisse.tristique@nonnisiAenean.edu       |           22 |
| amet.faucibus.ut@condimentumegetvolutpat.ca   |           17 |
| sed@lacusUtnec.ca                             |            4 |
+-----------------------------------------------+--------------+
```

Pour rechercher des variantes du mot `Center` et renvoyer la position de début de la première correspondance, utilisez l’exemple suivant.

```
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 |
+-----------------------+--------------+
```

Pour rechercher la position de début de la première occurrence de la chaîne `FOX`, à l’aide d’une logique de correspondance respectant la casse, utilisez l’exemple suivant. 

```
SELECT REGEXP_INSTR('the fox', 'FOX', 1, 1, 0, 'i');

+--------------+
| regexp_instr |
+--------------+
|            5 |
+--------------+
```

Pour utiliser un modèle écrit en PCRE pour localiser des mots contenant au moins un chiffre et une lettre minuscule, utilisez l’exemple suivant. 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 |
+--------------+
```

Pour utiliser un modèle écrit en PCRE pour localiser des mots contenant au moins un chiffre et une lettre minuscule, utilisez l’exemple suivant. 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 |
+--------------+
```