Partilhar via


REGEXP_MATCHES (Transact-SQL)

Aplica-se a: SQL Server 2025 (17.x) Azure SQL Database AzureSQL Managed InstanceSQL database in Microsoft Fabric

Devolve uma tabela de substrings capturadas que correspondem a um padrão de expressão regular a uma string. Se nenhuma correspondência for encontrada, a função não retornará nenhuma linha.

REGEXP_MATCHES
(
    string_expression,
    pattern_expression [ , flags ]
)

Requer o nível de compatibilidade do banco de dados 170. Para definir o nível de compatibilidade do banco de dados, revise o nível de compatibilidade ALTER DATABASE (Transact-SQL).

Note

As expressões regulares estão disponíveis na Instância Gerenciada SQL do Azure com a política de atualizaçãoSQL Server 2025 ou Always-up-to-date.

Arguments

string_expression

Uma expressão de uma cadeia de caracteres.

Pode ser uma constante, variável ou coluna de cadeia de caracteres.

Tipos de dados: char, nchar, varcharou nvarchar.

Note

As REGEXP_LIKEfunções , REGEXP_COUNTe REGEXP_INSTR suportam tipos de LOB (varchar(max) e nvarchar(max)) até 2 MB para o parâmetro string_expression .

pattern_expression

Padrão de expressão regular a ser correspondido. Geralmente um texto literal.

Tipos de dados: char, nchar, varcharou nvarchar. pattern_expression suporta um comprimento máximo de caracteres de 8.000 bytes.

flags

Um ou mais caracteres que especificam os modificadores usados para pesquisar correspondências. Type é varchar ou char, com um máximo de 30 caracteres.

Por exemplo, ims. A predefinição é c. Se uma (' ') de cadeia de caracteres vazia for fornecida, ela será tratada como o valor padrão ('c'). Forneça c ou quaisquer outras expressões de caracteres. Se o sinalizador contiver vários caracteres contraditórios, o SQL Server usará o último caractere.

Por exemplo, se você especificar ic o regex retornará a correspondência que diferencia maiúsculas de minúsculas.

Se o valor contiver um caractere diferente daqueles listados em valores de sinalizador suportados, a consulta retornará um erro como o exemplo a seguir:

Invalid flag provided. '<invalid character>' are not valid flags. Only {c,i,s,m} flags are valid.
Valores de sinalizador suportados
Flag Description
i Não diferencia maiúsculas de minúsculas (padrão false)
m Modo multi-linha: e ^ corresponder a linha de início/fim, $ além do texto de início/fim (padrãofalse)
s Deixar . corresponder \n (padrão false)
c Diferencia maiúsculas de minúsculas (padrão true)

Returns

Retorna um resultado tabular da seguinte maneira:

Nome da coluna Tipo de dados Description
match_id bigint A sequência de palavras correspondentes.
start_position int Posição inicial do índice.
end_position int Posição final do índice.
match_value Mesmo tipo que string_expression ou varchar Expressão correspondente.
substring_matches json Documento JSON descrevendo a correspondência.

Examples

Retornar resultados tabulares desse 'Learning #AzureSQL #AzureSQLDB' início com um # caractere seguido por um ou mais caracteres alfanuméricos (A-Z, a-z, 0-9) ou sublinhados (_).

SELECT *
FROM REGEXP_MATCHES ('Learning #AzureSQL #AzureSQLDB', '#([A-Za-z0-9_]+)');
match_id start_position end_position match_value substring_matches
1        10             18           #AzureSQL   [{"value":"AzureSQL","start":11,"length":8}]
2        20             30           #AzureSQLDB [{"value":"AzureSQLDB","start":21,"length":10}]

Retornar cadeias de caracteres dessa ABC correspondência que começam com a letra A seguida por exatamente dois caracteres.

SELECT *
FROM REGEXP_MATCHES ('ABC', '^(A)(..)$');
match_id start_position end_position match_value substring_matches
1        1              3            ABC         [{"value":"A","start":1,"length":1},{"value":"BC","start":2,"length":2}]