

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

Recherche un modèle d’expression régulière dans une chaîne et remplace chaque occurrence du modèle par la chaîne spécifiée. REGEXP\$1REPLACE est similaire à la [Fonction REPLACE](r_REPLACE.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.

REGEXP\$1REPLACE est similaire à la [Fonction TRANSLATE](r_TRANSLATE.md) et la [Fonction REPLACE](r_REPLACE.md), sauf que TRANSLATE fait plusieurs remplacements de caractère unique et REPLACE remplace une chaîne entière par une autre chaîne, tandis que REGEXP\$1REPLACE vous permet de rechercher un modèle d’expression régulière dans une chaîne.

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

```
REGEXP_REPLACE( source_string, pattern [, replace_string [ , position [, parameters ] ] ] )
```

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

 *source\$1string*   
Expression de chaîne `CHAR` ou `VARCHAR`, 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).

*replace\$1string*  
(Facultatif) Expression de chaîne `CHAR` ou `VARCHAR`, comme un nom de colonne, qui va remplacer chaque occurrence de modèle. La valeur par défaut est une chaîne vide ( "" ). 

 *position*   
(Facultatif) Entier 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érieure au nombre de caractères de *source\$1string*, le résultat est *source\$1string*.

 *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.
+ 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_REPLACE-return-type"></a>

VARCHAR

Si *pattern* ou *replace\$1string* a la valeur `NULL`, la fonction renvoie `NULL`.

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

Pour remplacer toutes les occurrences de la chaîne `FOX` dans la valeur `quick brown fox`, à l’aide d’une correspondance respectant la casse, utilisez l’exemple suivant.

```
SELECT REGEXP_REPLACE('the fox', 'FOX', 'quick brown fox', 1, 'i');

+---------------------+
|   regexp_replace    |
+---------------------+
| the quick brown fox |
+---------------------+
```

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. Pour remplacer chaque occurrence d’un tel mot par la valeur `[hidden]`, utilisez l’exemple suivant.

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

+-------------------------------+
|        regexp_replace         |
+-------------------------------+
| [hidden] plain A1234 [hidden] |
+-------------------------------+
```

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. Pour remplacer chaque occurrence d’un tel mot par la valeur `[hidden]` (diffère de l’exemple précédent car une correspondance ne respectant pas la casse est utilisée), utilisez l’exemple suivant.

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

+----------------------------------+
|          regexp_replace          |
+----------------------------------+
| [hidden] plain [hidden] [hidden] |
+----------------------------------+
```

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 supprimer le caractère `@` et le nom de domaine des adresses e-mail, utilisez l’exemple suivant.

```
SELECT email, REGEXP_REPLACE(email, '@.*\\.(org|gov|com|edu|ca)$')
FROM users
ORDER BY userid LIMIT 4;

+-----------------------------------------------+-----------------------+
|                     email                     |    regexp_replace     |
+-----------------------------------------------+-----------------------+
| Etiam.laoreet.libero@sodalesMaurisblandit.edu | Etiam.laoreet.libero  |
| Suspendisse.tristique@nonnisiAenean.edu       | Suspendisse.tristique |
| amet.faucibus.ut@condimentumegetvolutpat.ca   | amet.faucibus.ut      |
| sed@lacusUtnec.ca                             | sed                   |
+-----------------------------------------------+-----------------------+
```

Pour remplacer les noms de domaine des adresses e-mail par `internal.company.com`, utilisez l’exemple suivant.

```
SELECT email, REGEXP_REPLACE(email, '@.*\\.[[:alpha:]]{2,3}','@internal.company.com') 
FROM users
ORDER BY userid LIMIT 4;

+-----------------------------------------------+--------------------------------------------+
|                     email                     |               regexp_replace               |
+-----------------------------------------------+--------------------------------------------+
| Etiam.laoreet.libero@sodalesMaurisblandit.edu | Etiam.laoreet.libero@internal.company.com  |
| Suspendisse.tristique@nonnisiAenean.edu       | Suspendisse.tristique@internal.company.com |
| amet.faucibus.ut@condimentumegetvolutpat.ca   | amet.faucibus.ut@internal.company.com      |
| sed@lacusUtnec.ca                             | sed@internal.company.com                   |
+-----------------------------------------------+--------------------------------------------+
```