Tous les produits
Search
Centre de documentation

MaxCompute:RLIKE

Dernière mise à jour :Aug 10, 2026

RLIKE est un opérateur fourni par MaxCompute SQL, basé sur la spécification PCRE (Perl Compatible Regular Expressions), utilisé pour la correspondance de motifs et le remplacement dans les instructions SQL. Cette rubrique décrit l'utilisation et fournit des exemples de l'opérateur RLIKE. Pour la liste complète des métacaractères et des classes de caractères pris en charge par les expressions régulières dans MaxCompute SQL, consultez la section Expressions régulières.

Métacaractères

Le tableau suivant répertorie les métacaractères couramment utilisés. Pour la liste complète, consultez la section Expressions régulières.

Métacaractère

Description

^

Correspond au début d'une chaîne.

$

Correspond à la fin d'une chaîne.

.

Correspond à n'importe quel caractère unique.

*

Correspond au caractère ou au motif précédent zéro fois ou plus.

+

Correspond au caractère ou au motif précédent une fois ou plus.

?

  • Correspond au caractère ou au motif précédent zéro ou une fois.

  • Lorsqu'il est placé après un quantificateur (*, +, ?, {n}, {n,} ou {n,m}), ce quantificateur passe en mode non gourmand. Le mode non gourmand correspond au nombre minimal de caractères possible ; le mode gourmand par défaut correspond au nombre maximal possible.

{n} ou {m,n}

{n} correspond exactement à n occurrences. {m,n} correspond entre m et n occurrences.

\

Caractère d'échappement.

\d

Correspond à n'importe quel chiffre (0–9).

\D

Correspond à n'importe quel caractère non numérique.

Exemples

Correspondance de motifs généraux

  • Correspondance du début et de la fin d'une chaîne

    -- Check whether the string aa123bb starts with a. Returns true.
    SELECT 'aa123bb' RLIKE '^a';
    
    -- Check whether the string aa123bb starts with a and ends with b. Returns true.
    SELECT 'aa123bb' RLIKE '^a.*b$';
    
    -- Check whether the string footerbar contains foo followed by bar. Returns true.
    SELECT 'footerbar' RLIKE 'foo(.*?)(bar)';
    
    -- Check whether the string footerbar starts with foo and ends with bar. Returns true.
    SELECT 'footerbar' RLIKE '^foo(.*?)(bar)$';
  • Correspondance de n'importe quel caractère

    -- Check whether the string cc123bb starts with any character in the range a to d. Returns true.
    SELECT 'cc123bb' RLIKE '^[a-d]';
    
    -- Check whether the string 12abc34 starts with 12, ends with 34, and contains at least one character in the range a to d in between. Returns true.
    SELECT '12abc34' RLIKE '^12[a-d]+34$';

Correspondance des caractères d'échappement

L'opérateur RLIKE utilise une barre oblique inverse (\) comme caractère d'échappement. Par conséquent, toute barre oblique inverse (\) apparaissant dans un motif d'expression régulière doit être échappée deux fois.

  • Exemple 1

    Pour faire correspondre la chaîne a+b, où + est un caractère spécial regex, il doit être échappé. Dans le moteur regex, cela s'exprime par a\+b. Comme une couche d'échappement supplémentaire est requise, l'expression qui correspond à la chaîne est a\\+b.

    SELECT 'a+b' RLIKE 'a\\+b';
    
    -- Results:
    +------+
    | _c1  |
    +------+
    | true |
    +------+
  • Exemple 2

    Pour faire correspondre le caractère barre oblique inverse \, qui est un caractère spécial dans le moteur regex et doit être exprimé sous la forme \\, une couche d'échappement supplémentaire nécessite qu'il soit écrit sous la forme \\\\.

    Dans MaxCompute SQL, a\\b est écrit dans l'expression, mais a\b s'affiche dans la sortie, car MaxCompute applique l'échappement à l'expression.

    SELECT 'a\\b', 'a\\b' RLIKE 'a\\\b';
    
    -- Results:
    +-----+------+
    | _c0 | _c1  |
    +-----+------+
    | a\b | false |
    +-----+------+
    
    SELECT 'a\\b', 'a\\b' RLIKE 'a\\\\b';
    
    -- Results:
    +-----+------+
    | _c0 | _c1  |
    +-----+------+
    | a\b | true |
    +-----+------+
  • Exemple 3

    Si la chaîne contient un caractère de tabulation (TAB), le système stocke \t comme un seul caractère lors de la lecture. Par conséquent, dans le motif regex, il est traité comme un caractère ordinaire.

    SELECT 'a\tb', 'a\tb' RLIKE 'a\tb';
    
    -- Results:
    +---------+------+
    | _c0     | _c1  |
    +---------+------+
    | a     b | true |
    +---------+------+
  • Exemple 4

    Faites correspondre les chaînes contenant des chiffres (\d), des non-chiffres (\D) et des références arrière (\n).

    -- Check whether the string 2025maxcompute starts with a digit character. Returns true.
    SELECT '2025maxcompute' RLIKE '^\\\d';
    
    -- Check whether the string maxcompute2025test starts with a non-digit character. Returns true.
    SELECT 'maxcompute2025test' RLIKE '^\\\D';
    
    -- Check whether the string alibaba-cloud-MC2025-test contains MC followed by digits. Returns true.
    SELECT 'alibaba-cloud-MC2025-test' RLIKE 'MC\\\d';
    
    -- Check whether the string alibaba-cloud-MC2025-test contains MC followed by exactly 4 digits. Returns true.
    SELECT 'alibaba-cloud-MC2025-test' RLIKE 'MC\\\d{4}-';
    
    -- Check whether the string contains abcdefdef. Returns true.
    -- abc is capture group 1, def is capture group 2, and \2 represents a backreference to the second capture group, which must be escaped again as \\\2. This matches abcdefdef.
    SELECT 'mmabcdefdefgg' RLIKE '(abc)(def)\\\2';

Groupes de caractères

Groupes de caractères POSIX

Pour la liste complète des classes de caractères POSIX, consultez la section Expressions régulières.

Groupe de caractères

Description

Équivalent

[[:alnum:]]

Lettres et chiffres

[a-zA-Z0-9]

[[:alpha:]]

Lettres

[a-zA-Z]

[[:digit:]]

Chiffres

[0-9]

[[:lower:]]

Lettres minuscules

[a-z]

[[:space:]]

Caractères d'espacement

[ \t\r\n\v\f]

[[:upper:]]

Lettres majuscules

[A-Z]

Exemples

-- Check whether the string hello123 contains only letters and digits. Returns true.
SELECT 'hello123' RLIKE '^[[:alnum:]]+$';

-- Check whether the string hello_123 contains only letters and digits. Returns false.
SELECT 'hello_123' RLIKE '^[[:alnum:]]+$';

Groupes de caractères chinois

Pour la liste complète des groupes de caractères chinois, consultez la section Expressions régulières.

Groupe de caractères

Motif

Caractères à double octet (par exemple, caractères chinois)

[^\\\x{00}-\\\x{ff}]

Caractères chinois

[\\x{4e00}-\\x{9fa5}]

Ponctuation chinoise

Les signes de ponctuation chinois n'ont pas de plage d'encodage unifiée. Utilisez le point de code Unicode de chaque caractère pour effectuer la correspondance individuellement.

Exemples

Le point chinois (« 。 ») correspond au point de code Unicode \x{3002} :

SELECT * FROM VALUES ('你好。'),('nihao!') t(d) WHERE d RLIKE '[\\x{3002}]';

-- Returns:
-- +------------+
-- | d          |
-- +------------+
-- | 你好。      |
-- +------------+
Pour faire correspondre une apostrophe, utilisez le motif [\x{0027}] (point de code Unicode 0027 ).