Pular para conteúdo

CUSTOM_REGEX - Regex Personalizado

O que é esta operação?

A operação CUSTOM_REGEX permite aplicar expressões regulares personalizadas para remover ou substituir padrões específicos não cobertos pelas operações padrão.

Por que esta operação existe?

Cada projeto tem necessidades únicas de limpeza. Esta operação existe para:

  1. Flexibilidade Total: Remover padrões específicos do seu domínio
  2. Casos Especiais: Limpar formatos não cobertos pelas operações padrão
  3. Substituição Avançada: Trocar padrões por outros valores
  4. Extensibilidade: Adicionar limpezas sem modificar o código do sistema

Como funciona internamente?

Código interno (content-cleaner-executor.service.ts:300-309):

// Apply custom regex if provided
if (config.customRegex) {
  try {
    const customRegex = new RegExp(config.customRegex, 'g');
    const replacement = config.customReplacement || '';
    cleaned = cleaned.replace(customRegex, replacement);
  } catch (error) {
    this.logger.warn(`Failed to apply custom regex: ${error.message}`);
  }
}

Parâmetros Detalhados

customRegex (string, opcional)

O que é: Expressão regular em formato string para encontrar padrões no texto.

Padrão: Nenhum (operação não executada se não fornecido)

customReplacement (string, opcional)

O que é: String que substituirá os padrões encontrados pelo regex.

Padrão: "" (string vazia - remove o que foi encontrado)

Parâmetros

Campo Tipo Obrigatório Descrição
inputVariable string Sim Variável contendo o texto
customRegex string Não Expressão regular personalizada
customReplacement string Não String de substituição (padrão: "")
outputVariable string Não Variável para resultado

Exemplo 1: Remover CPFs

Objetivo: Remover números de CPF formatados (XXX.XXX.XXX-XX)

JSON para Importar

{
  "name": "Remover CPFs do Texto",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Texto com CPF",
        "parameters": {
          "variableName": "text_with_cpf",
          "variableValue": "Cliente José Silva, CPF 123.456.789-00, realizou compra"
        }
      }
    },
    {
      "id": "cleaner_1",
      "type": "content_cleaner",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Remover CPF",
        "parameters": {
          "inputVariable": "text_with_cpf",
          "customRegex": "\\d{3}\\.\\d{3}\\.\\d{3}-\\d{2}",
          "customReplacement": "[CPF REMOVIDO]",
          "outputVariable": "text_clean"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Texto Anonimizado",
        "parameters": {
          "message": "🔒 Texto protegido:\n{{text_clean}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "variable_1" },
    { "source": "variable_1", "target": "cleaner_1" },
    { "source": "cleaner_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Saída esperada:

🔒 Texto protegido:
Cliente José Silva, CPF [CPF REMOVIDO], realizou compra

Exemplo 2: Remover Menções @usuario

Objetivo: Remover menções estilo Twitter/Instagram (@usuario)

JSON para Importar

{
  "name": "Remover Menções",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Post Social",
        "parameters": {
          "variableName": "social_post",
          "variableValue": "Adorei! @empresa vocês são incríveis! Obrigado @suporte"
        }
      }
    },
    {
      "id": "cleaner_1",
      "type": "content_cleaner",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Remover Menções",
        "parameters": {
          "inputVariable": "social_post",
          "customRegex": "@\\w+",
          "customReplacement": "",
          "removeExtraSpaces": true,
          "outputVariable": "clean_post"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Post Limpo",
        "parameters": {
          "message": "📝 Post sem menções:\n{{clean_post}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "variable_1" },
    { "source": "variable_1", "target": "cleaner_1" },
    { "source": "cleaner_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Saída esperada:

📝 Post sem menções:
Adorei! vocês são incríveis! Obrigado

Exemplo 3: Substituir Hashtags por Palavras

Objetivo: Converter #hashtag para [TAG:hashtag]

JSON para Importar

{
  "name": "Converter Hashtags",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "variable_1",
      "type": "variable",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Post com Hashtags",
        "parameters": {
          "variableName": "post",
          "variableValue": "Produto incrível! #qualidade #recomendo #topdemais"
        }
      }
    },
    {
      "id": "cleaner_1",
      "type": "content_cleaner",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Converter Hashtags",
        "parameters": {
          "inputVariable": "post",
          "customRegex": "#(\\w+)",
          "customReplacement": "[TAG:$1]",
          "outputVariable": "formatted_post"
        }
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Post Formatado",
        "parameters": {
          "message": "📋 Post formatado:\n{{formatted_post}}"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 900, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "variable_1" },
    { "source": "variable_1", "target": "cleaner_1" },
    { "source": "cleaner_1", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Saída esperada:

📋 Post formatado:
Produto incrível! [TAG:qualidade] [TAG:recomendo] [TAG:topdemais]

Resposta do Node

{
  "success": true,
  "data": {
    "cleaned_content": "Texto processado com regex personalizado",
    "stats": {
      "originalLength": 100,
      "cleanedLength": 85,
      "reductionPercentage": "15.00%"
    }
  },
  "executionTime": 5,
  "logs": [
    "Cleaned content using custom mode",
    "Original: 100 chars → Cleaned: 85 chars"
  ]
}

Boas Práticas

SIM: - Use para padrões específicos do seu domínio (CPF, CNPJ, IDs customizados) - Teste o regex separadamente antes de usar no flow - Use grupos de captura () com $1, $2 em replacement para transformações avançadas - Combine com outras operações de limpeza

NÃO: - Usar regex complexos sem testar (pode causar erros) - Esquecer de escapar caracteres especiais no regex (\. para ponto literal) - Tentar usar flags como /i no string (use apenas o padrão, flag 'g' é adicionada automaticamente)

Dicas

💡 Dica 1: A flag 'g' (global) é adicionada automaticamente - substitui TODAS as ocorrências

💡 Dica 2: Use \\ para escapar caracteres especiais (ex: \\. para ponto literal)

💡 Dica 3: Grupos de captura () podem ser referenciados em replacement como $1, $2, $3

💡 Dica 4: Se o regex for inválido, a operação é ignorada e um warning é logado

💡 Dica 5: Teste seus regex em https://regex101.com antes de usar no flow

Exemplos de Regex Úteis

Padrão Regex Descrição
CPF \\d{3}\\.\\d{3}\\.\\d{3}-\\d{2} Remove CPF formatado
CNPJ \\d{2}\\.\\d{3}\\.\\d{3}/\\d{4}-\\d{2} Remove CNPJ formatado
CEP \\d{5}-\\d{3} Remove CEP brasileiro
Menções @\\w+ Remove @mencoes
Hashtags #\\w+ Remove #hashtags
IPs \\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3} Remove endereços IP
Datas BR \\d{2}/\\d{2}/\\d{4} Remove datas DD/MM/YYYY

Próximo Node

REMOVE_SPECIAL_CHARS - Remove caracteres especiais padrão → REMOVE_NUMBERS - Remove todos números → README - Visão geral do Content Cleaner