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. |
|
|
|
|
| Caractère d'échappement. |
| Correspond à n'importe quel chiffre (0–9). |
| 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 para\+b. Comme une couche d'échappement supplémentaire est requise, l'expression qui correspond à la chaîne esta\\+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\\best écrit dans l'expression, maisa\bs'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
\tcomme 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 |
|
|
Lettres et chiffres |
|
|
|
Lettres |
|
|
|
Chiffres |
|
|
|
Lettres minuscules |
|
|
|
Caractères d'espacement |
|
|
|
Lettres majuscules |
|
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) |
|
|
Caractères chinois |
|
|
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 Unicode0027).