Tous les produits
Search
Centre de documentation

AnalyticDB:Fonctions d'expression régulière

Dernière mise à jour :Aug 10, 2026

AnalyticDB for MySQL prend en charge les fonctions d'expression régulière suivantes pour la recherche de motifs, l'extraction et le remplacement dans les requêtes SQL.

  • REGEXP_INSTR — renvoie la position d'une correspondance

  • REGEXP_MATCHES — renvoie un tableau contenant toutes les sous-chaînes correspondantes

  • REGEXP_REPLACE — remplace les sous-chaînes correspondantes

  • REGEXP_SUBSTR — renvoie une sous-chaîne correspondante

Prérequis

Avant de commencer, vérifiez que :

  • La version mineure du moteur du cluster AnalyticDB for MySQL est la 3.1.5.10 ou une version ultérieure.

Remarque

Pour vérifier la version mineure du moteur, consultez la rubrique Comment afficher la version d'un cluster AnalyticDB for MySQL ?

REGEXP_INSTR

regexp_instr(source, pattern[, position[, occurrence[, option]]])

Renvoie un entier indiquant la position de début ou de fin de la première (ou N-ième) sous-chaîne de source qui correspond à pattern. Renvoie 0 si aucune correspondance n'est trouvée.

Paramètres

Obligatoire :

Paramètre Type Description
source VARCHAR La chaîne à rechercher.
pattern — L'expression régulière à utiliser pour la correspondance.

Facultatif :

Paramètre Type Valeur par défaut Description
position BIGINT 1 La position du caractère dans source où commence la recherche.
occurrence BIGINT 1 L'occurrence de la correspondance à renvoyer.
option BIGINT 0 Indique s'il faut renvoyer la position de début de la correspondance (0) ou la position immédiatement après la fin de la correspondance (1).

Valeur de retour

Renvoie une valeur de type BIGINT. Renvoie 0 si aucune correspondance n'est trouvée.

Exemples

Renvoyer la position de début de la première correspondance

SELECT REGEXP_INSTR('dog cat dog', 'dog') as res;
+-----+
| res |
+-----+
|   1 |
+-----+

Renvoyer la position de début de la deuxième correspondance

SELECT REGEXP_INSTR('dog cat dog', 'dog', 1, 2) as res;
+-----+
| res |
+-----+
|   9 |
+-----+

Renvoyer la position située après la fin de la première correspondance

SELECT REGEXP_INSTR('dog cat dog', 'dog', 1, 1, 1) as res;
+-----+
| res |
+-----+
|   4 |
+-----+

REGEXP_MATCHES

regexp_matches(source, pattern[, flag])

Renvoie un ARRAY(ARRAY(VARCHAR)) contenant toutes les sous-chaînes de source qui correspondent à pattern. Renvoie un tableau vide si aucune correspondance n'est trouvée.

  • Sans l'indicateur g : renvoie uniquement la première correspondance.

  • Avec l'indicateur g : renvoie toutes les correspondances.

  • Si pattern contient des groupes de capture, les sous-chaînes correspondantes de chaque groupe sont renvoyées sous forme de tableaux imbriqués. Sinon, la correspondance complète est renvoyée.

Remarque

Pour obtenir une seule chaîne correspondante plutôt qu'un tableau, utilisez la fonction REGEXP_SUBSTR à la place.

Paramètres

Obligatoire :

Paramètre Type Description
source VARCHAR La chaîne à rechercher.
pattern — L'expression régulière à utiliser pour la correspondance.

Facultatif :

Paramètre Type Description
flag VARCHAR Un ou plusieurs caractères qui contrôlent le comportement de la correspondance. Utilisez g pour renvoyer toutes les correspondances au lieu de la première uniquement.

Valeur de retour

Renvoie un ARRAY(ARRAY(VARCHAR)). Renvoie un tableau vide si aucune correspondance n'est trouvée.

Exemples

Correspondance avec des groupes de capture (première correspondance uniquement)

SELECT regexp_matches('foobarbequebaz', '(bar)(beque)');
+---------------------+
| regexp_matches      |
+---------------------+
| [["bar","beque"]]   |

Correspondance sans groupes de capture

SELECT regexp_matches('foobarbequebaz', 'barbeque');
+---------------------+
| regexp_matches      |
+---------------------+
| [["barbeque"]]      |

Faire correspondre toutes les occurrences à l'aide de l'indicateur g

SELECT regexp_matches('foobarbequebazilbarfbonk', '(b[^b]+)(b[^b]+)', 'g');
+------------------------------------------+
| regexp_matches                           |
+------------------------------------------+
| [["bar","beque"], ["bazil","barf"]]      |

REGEXP_REPLACE

regexp_replace(source, pattern, replacement[, position[, occurrence]])

Remplace les sous-chaînes de source qui correspondent à pattern par replacement. Par défaut, remplace toutes les correspondances en commençant par le premier caractère. Renvoie la chaîne d'origine si aucune correspondance n'est trouvée.

Paramètres

Obligatoire :

Paramètre Type Description
source VARCHAR La chaîne à rechercher.
pattern — L'expression régulière à utiliser pour la correspondance.
replacement VARCHAR La chaîne de substitution pour chaque correspondance.

Facultatif :

Paramètre Type Valeur par défaut Description
position BIGINT 1 La position du caractère dans source où commence la recherche.
occurrence BIGINT 0 L'occurrence à remplacer. La valeur 0 remplace toutes les correspondances ; un entier positif ne remplace que cette occurrence spécifique.

Valeur de retour

Renvoie une valeur de type VARCHAR. Renvoie la chaîne d'origine si aucune correspondance n'est trouvée.

Exemples

Remplacer toutes les correspondances

SELECT REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X') as res;
+-------+
| res   |
+-------+
| X X X |
+-------+

Remplacer uniquement la troisième correspondance

SELECT REGEXP_REPLACE('abc def ghi', '[a-z]+', 'X', 1, 3) as res;
+-----------+
| res       |
+-----------+
| abc def X |
+-----------+

REGEXP_SUBSTR

regexp_substr(source, pattern[, position[, occurrence]])

Renvoie la sous-chaîne de source qui correspond à pattern. Renvoie NULL si aucune correspondance n'est trouvée.

Paramètres

Obligatoire :

Paramètre Type Description
source VARCHAR La chaîne à rechercher.
pattern — L'expression régulière à utiliser pour la correspondance.

Facultatif :

Paramètre Type Valeur par défaut Description
position BIGINT 1 La position du caractère dans source où commence la recherche.
occurrence BIGINT 1 L'occurrence de la correspondance à renvoyer.

Valeur de retour

Renvoie une valeur de type VARCHAR. Renvoie NULL si aucune correspondance n'est trouvée.

Exemples

Renvoyer la troisième correspondance

SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+', 1, 3) as res;
+------+
| res  |
+------+
| ghi  |
+------+

Renvoyer la première correspondance (comportement par défaut)

SELECT REGEXP_SUBSTR('abc def ghi', '[a-z]+') as res;
+------+
| res  |
+------+
| abc  |
+------+