RegExMatch
Descrição
A função RegExMatch busca um padrão dentro de uma string usando expressões regulares (regex). É extremamente útil no dia a dia de SFMC quando você precisa validar formatos de dados como CPF, CEP, telefone ou extrair partes específicas de um texto - situações comuns ao lidar com dados de clientes brasileiros que nem sempre vêm padronizados. Você passa a string, o padrão regex, o grupo de correspondência que quer retornar e, opcionalmente, parâmetros de repetição como IgnoreCase ou Multiline.
Sintaxe
RegExMatch(sourceString, regExPattern, returnValue, repeatParameter)
Parâmetros
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| sourceString | string | Sim | A string onde a busca será realizada. |
| regExPattern | string | Sim | A expressão regular usada na busca. |
| returnValue | string | Sim | O nome ou ordinal do grupo de correspondência a ser retornado. |
| repeatParameter | string | Não | Parâmetro de repetição a ser aplicado. Aceita qualquer valor da enumeração .NET RegexOptions, como IgnoreCase e Multiline. |
Exemplo básico
Validando se um código promocional informado pelo cliente contém entre 5 e 7 caracteres alfanuméricos:
%%[
SET @codigoPromo = "MEGA23"
SET @resultado = RegExMatch(@codigoPromo, "^[a-zA-Z0-9]{5,7}$", 0)
IF NOT EMPTY(@resultado) THEN
]%%
O código <b>%%=v(@resultado)=%%</b> é válido! Aproveite seu desconto na MegaStore.
%%[ ELSE ]%%
O código informado não é válido. Verifique e tente novamente.
%%[ ENDIF ]%%
Saída:
O código MEGA23 é válido! Aproveite seu desconto na MegaStore.
Exemplo avançado
Removendo prefixos de tratamento (Sr., Sra., Dr., Dra.) dos nomes de clientes em um rowset para padronizar a saudação em uma campanha de e-mail da Lojas Vitória:
%%[
SET @nomes = BuildRowsetFromString("Sr. João Silva,Sra. Maria Santos,Dr. Carlos Mendes,Dra. Ana Lima,Pedro Rocha", ",")
FOR @i = 1 TO RowCount(@nomes) DO
SET @linhaAtual = Field(Row(@nomes, @i), 1)
SET @prefixo = RegExMatch(@linhaAtual, "^(Sr\.?a?|Sra\.?|Dr\.?a?|Dra\.?)\s+", 0, "IgnoreCase")
IF NOT EMPTY(@prefixo) THEN
SET @nomeLimpo = Replace(@linhaAtual, @prefixo, "")
ELSE
SET @nomeLimpo = @linhaAtual
ENDIF
]%%
Olá, %%=v(@nomeLimpo)=%%! Confira as ofertas da Lojas Vitória.<br>
%%[ NEXT @i ]%%
Saída:
Olá, João Silva! Confira as ofertas da Lojas Vitória.
Olá, Maria Santos! Confira as ofertas da Lojas Vitória.
Olá, Carlos Mendes! Confira as ofertas da Lojas Vitória.
Olá, Ana Lima! Confira as ofertas da Lojas Vitória.
Olá, Pedro Rocha! Confira as ofertas da Lojas Vitória.
Observações
-
A
RegExMatchutiliza o motor de expressões regulares do .NET, então a sintaxe de padrões segue essa especificação. Se você já trabalhou com regex em C# ou PowerShell, vai se sentir em casa. -
O parâmetro
returnValueaceita o ordinal do grupo de captura. Use0para retornar a correspondência completa,1para o primeiro grupo entre parênteses,2para o segundo, e assim por diante. -
O parâmetro
repeatParameteraceita valores da enumeração .NETRegexOptions. Os mais úteis no dia a dia sãoIgnoreCase(ignora maiúsculas/minúsculas) eMultiline(trata cada linha como início/fim separado).
💡 Dica: Ao combinar
RegExMatchcom Replace, você consegue substituir trechos de texto baseados em padrões regex - algo que a ReplaceList não faz, já que ela só trabalha com strings estáticas. Use regex quando os dados de origem tiverem variações e inconsistências (espaços extras, pontuação opcional, etc.).
⚠️ Atenção: Se a expressão regular não encontrar correspondência na string, o retorno será vazio. Sempre valide o resultado com Empty antes de usar o valor, especialmente em réguas automatizadas onde dados inconsistentes são comuns.
Funções relacionadas
- Replace - substituição simples de strings, ideal para combinar com
RegExMatch - ReplaceList - substitui múltiplas strings estáticas de uma vez (sem suporte a regex)
- IndexOf - localiza a posição de uma substring (alternativa mais simples quando não precisa de regex)
- Substring - extrai parte de uma string por posição
- Trim - remove espaços em branco das extremidades