Todos os produtos
Search
Central de documentação

MaxCompute:RLIKE

Última atualização: Jun 30, 2026

O RLIKE é um operador do MaxCompute SQL baseado na especificação PCRE (Perl Compatible Regular Expressions) para correspondência e substituição de padrões em instruções SQL. Este tópico descreve o uso e apresenta exemplos do operador RLIKE. Para obter a lista completa de metacaracteres e classes de caracteres compatíveis com expressões regulares no MaxCompute SQL, consulte Expressões regulares.

Metacaracteres

A tabela a seguir lista os metacaracteres mais utilizados. Para acessar a lista completa, consulte Expressões regulares.

Metacaractere

Descrição

^

Corresponde ao início de uma string.

$

Corresponde ao fim de uma string.

.

Corresponde a qualquer caractere único.

*

Corresponde ao caractere ou padrão anterior zero ou mais vezes.

+

Corresponde ao caractere ou padrão anterior uma ou mais vezes.

?

  • Corresponde ao caractere ou padrão anterior zero ou uma vez.

  • Quando colocado após um quantificador (*, +, ?, {n}, {n,} ou {n,m}), alterna esse quantificador para o modo não guloso. O modo não guloso corresponde ao menor número possível de caracteres; já o modo guloso padrão corresponde à maior quantidade possível.

{n} ou {m,n}

{n} corresponde exatamente n vezes. {m,n} corresponde entre m e n vezes.

\

Caractere de escape.

\d

Corresponde a qualquer dígito (0–9).

\D

Corresponde a qualquer caractere que não seja dígito.

Exemplos

Correspondência de padrões gerais

  • Correspondência no início e no fim de uma string

    -- 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)$';
  • Correspondência a qualquer caractere

    -- 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$';

Correspondência de caracteres de escape

O operador RLIKE utiliza a barra invertida (\) como caractere de escape. Portanto, qualquer barra invertida (\) presente em um padrão de expressão regular deve ter escape duplo.

  • Exemplo 1

    Para corresponder à string a+b, em que + é um caractere especial de regex, aplique escape. No mecanismo de regex, isso é expresso como a\+b. Como uma camada adicional de escape é necessária, a expressão que corresponde à string é a\\+b.

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

    Para corresponder ao caractere de barra invertida \, que é um caractere especial no mecanismo de regex e deve ser expresso como \\, uma camada adicional de escape exige que ele seja escrito como \\\\.

    No MaxCompute SQL, a\\b é escrito na expressão, mas a\b aparece na saída, pois o MaxCompute aplica escape à expressão.

    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 |
    +-----+------+
  • Exemplo 3

    Se a string contiver um caractere de tabulação (TAB), o sistema armazena \t como um único caractere durante a leitura. Assim, no padrão de regex, ele é tratado como um caractere comum.

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

    Faça a correspondência de strings que contenham dígitos (\d), não dígitos (\D) e referências anteriores (\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';

Grupos de caracteres

Grupos de caracteres POSIX

Para obter a lista completa de classes de caracteres POSIX, consulte Expressões regulares.

Grupo de caracteres

Descrição

Equivalente

[[:alnum:]]

Letras e dígitos

[a-zA-Z0-9]

[[:alpha:]]

Letras

[a-zA-Z]

[[:digit:]]

Dígitos

[0-9]

[[:lower:]]

Letras minúsculas

[a-z]

[[:space:]]

Caracteres de espaço em branco

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

[[:upper:]]

Letras maiúsculas

[A-Z]

Exemplos

-- 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:]]+$';

Grupos de caracteres chineses

Para obter a lista completa de grupos de caracteres chineses, consulte Expressões regulares.

Grupo de caracteres

Padrão

Caracteres de dois bytes (por exemplo, caracteres chineses)

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

Caracteres chineses

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

Pontuação chinesa

Os sinais de pontuação chineses não possuem um intervalo de codificação unificado. Utilize o ponto de código Unicode de cada caractere para fazer a correspondência individualmente.

Exemplos

O ponto final chinês ('。') corresponde ao ponto de código Unicode \x{3002}:

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

-- Returns:
-- +------------+
-- | d          |
-- +------------+
-- | 你好。      |
-- +------------+
Para corresponder a uma aspa simples, utilize o padrão [\x{0027}] (ponto de código Unicode 0027 ).