Todos os produtos
Search
Central de documentação

MaxCompute:REGEXP_EXTRACT_ALL

Última atualização: Sep 21, 2026

A função REGEXP_EXTRACT_ALL extrai todas as substrings da string source que correspondem ao pattern e as retorna como um array.

Sintaxe

ARRAY<T> REGEXP_EXTRACT_ALL(STRING <source>, STRING <pattern>[, BIGINT <group_id>])

Parâmetros

  • source: Obrigatório. Um valor do tipo STRING que especifica a string a ser pesquisada.

  • pattern: Obrigatório. Uma constante STRING ou uma expressão regular que especifica o padrão a ser correspondido. Para mais informações sobre expressões regulares, consulte Regular expression specifications.

  • group_id: Opcional. Um valor BIGINT que deve ser maior ou igual a 0.

    • Se você não especificar group_id, o sistema utilizará o valor padrão 1 e retornará um array com todos os resultados correspondentes em que group_id é 1.

    • Ao especificar um group_id, a função retorna um array com todos os resultados que correspondem a esse group_id.

    • Quando group_id é 0, todo o pattern é tratado como um único grupo.

Valor de retorno

Retorna um valor do tipo ARRAY<STRING>. As seguintes regras se aplicam:

  • A função retorna um erro quando pattern é uma string vazia, ou quando pattern não contém grupos de captura e group_id não é especificado.

    Nota

    Execute o comando SET odps.sql.bigquery.compatible=true; para ativar o modo de compatibilidade com BigQuery. Nesse modo, se o pattern não contiver grupos de captura e group_id não for especificado, a função retorna um array de substrings que correspondem ao pattern inteiro.

  • A função retorna um erro se group_id não for um valor BIGINT ou for menor que 0.

  • Se source, pattern ou group_id for NULL, a função retorna NULL.

Exemplos

  • Exemplo 1: Quando group_id não é especificado, a função retorna por padrão os resultados do primeiro group_id.

    -- Returns ["100","300"].
    SELECT REGEXP_EXTRACT_ALL('100-200, 300-400', '(\\d+)-(\\d+)');
  • Exemplo 2: Defina o valor de group_id como 2. A função retorna os resultados do segundo group_id.

    -- Returns ["200","400"].
    SELECT REGEXP_EXTRACT_ALL('100-200, 300-400', '(\\d+)-(\\d+)',2);
  • Exemplo 3: O pattern não contém grupos de captura. Os cenários a seguir descrevem o uso do comando:

    • Cenário 1: Se o pattern não contiver grupos de captura e group_id não for especificado, a função retorna um erro. No modo de compatibilidade com BigQuery, a função retorna um array de substrings que correspondem ao padrão inteiro.

      -- FAILED: ODPS-0130071:[0,0] Semantic analysis exception - physical plan generation failed: SQL Runtime Unretryable Error: ODPS-0121065:Argument value out of range - Regex group count is 0, but the specified group index is 1
      SELECT REGEXP_EXTRACT_ALL('100-200, 300-200', '\\d+-\\d+'); 
      
      -- Enable BigQuery compatibility mode.
      SET odps.sql.bigquery.compatible=true;
      -- Returns ["100-200","300-200"].
      SELECT REGEXP_EXTRACT_ALL('100-200, 300-200', '\\d+-\\d+'); 
    • Cenário 2: Se o pattern não contiver grupos de captura e group_id for definido como 0, a função retorna um array de substrings que correspondem ao padrão inteiro.

      -- Returns ["100-200","300-200"].
      SELECT REGEXP_EXTRACT_ALL('100-200, 300-200', '\\d+-\\d+',0);

Funções relacionadas

REGEXP_EXTRACT_ALL é uma função de string. Para mais informações sobre funções de string, consulte String Functions Overview.