Ir para o conteúdo

Como modificar uma expressão regular em um texto⚓︎

Este caso de uso serve para localizar e substituir CPFs ao longo de um texto a ser enviado para publicação pela Imprensa Oficial. Para isso, é necessário descaracterizar parte da cadeia de caracteres dos CPFs dos servidores que têm atos publicados no Diário Oficial do Estado.

São 2 desafios superados com esse protótipo de robô:

  • modificar parte da cadeia de caracteres que formam o CPF;
  • realizar o loop buscando a expressão regular do CPF, sem contar com uma variável numérica que esteja presente em uma tabela

O texto a ser modificado inclui várias partes obrigatórias e padronizadas, exceto o CPF, que aparece na íntegra, do sistema onde é extraído. Sua notação segue o modelo: 000.000.000-00

Após descaracterizá-lo para o modelo xxx.000.000-xx, é preciso procurar por todos os demais, ao longo do texto. Um loop aumentando a 'variável CPF' não seria aplicável, pois não se trata de uma variável numérica. Assim, a estratégia desse código foi utilizar as ações ACESSAR Voltar texto e RÓTULO Voltar Texto:

O produto final é a junção dos atos prontos para serem assinados e enviados para publicação, com os CPFs modificados.

A parte do código a que fez referência este post:

Código-Fonte
# Anonimização de CPFs
LABEL 'Voltar texto'
IF Contains(gabarito_copiado, $'''CPF''', True) THEN
    Text.CropText.CropTextBetweenFlags Text: gabarito_copiado FromFlag: $'''CPF ''' ToFlag: $''',''' IgnoreCase: True CroppedText=> CPF_cortado IsFlagFound=> IsFlagFound
    Text.GetSubtext.GetSubtextFromStartTo Text: CPF_cortado NumberOfChars: 4 Subtext=> inicio_cpf
    Text.GetSubtext.GetSubtextFrom Text: CPF_cortado CharacterPosition: 11 Subtext=> fim_cpf
    # Alguns CPFs tem espaço no meio, por isso coloquei esse "SE"
    Text.GetSubtext.GetSubtextFrom Text: CPF_cortado CharacterPosition: 4 Subtext=> meio_cpf
    IF StartsWith(meio_cpf, espaço, False) THEN
        Text.GetSubtext.GetSubtextFrom Text: CPF_cortado CharacterPosition: 12 Subtext=> fim_cpf
        Text.Trim Text: fim_cpf TrimOption: Text.TrimOption.ToEnd TrimmedText=> fim_cpf
    END
    Text.JoinText.Join List: $'''%inicio_cpf%***.***%fim_cpf%''' Result=> cpfanonimizado
    # Localizar e substituir o CPF
    MouseAndKeyboard.SendKeys.FocusAndSendKeysByTitleClass Title: $'''gabarito1 [Modo de Compatibilidade] - Word''' Class: $'''''' TextToSend: $'''{Control}({U})%CPF_cortado%{Tab}%cpfanonimizado%{Tab}{Tab}{Return}{Left}{Left}{Return}{Return}{Return}''' DelayBetweenKeystrokes: 30 SendTextAsHardwareKeys: False
    Text.CropText.CropTextAfterFlag Text: gabarito_copiado FromFlag: $'''CPF ''' IgnoreCase: True CroppedText=> gabarito_copiado IsFlagFound=> IsFlagFound
    GOTO 'Voltar texto'
END

Saiba Mais⚓︎

A página dos guias da Microsoft sobre manipulação de texto pode ser acessada neste link.

Para estudar a criação e a execução de loops, acesse esta página

Comentários