Exemplos práticos
No artigo atual, demonstramos como você pode extrair quaisquer dados do documento graças às expressões regulares de vários elementos no PaperOffice e armazená-los automaticamente como uma palavra-chave para o documento.
Criamos um documento de amostra abaixo com uma data específica. Este documento é uma fatura. O padrão de data em nosso documento está formatado assim:
Extract information automatically from invoices
Mês, composto por letras, mas a primeira letra é sempre maiúscula, seguida de espaço, depois o dia seguido de vírgula, outro espaço e depois o ano.
Por exemplo: 20 de setembro de 2019 ou 05 de março de 2022
Para extrair esta data podemos usar a seguinte expressão regular (REGEX):
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d {2 })
Vamos dividir a expressão em grupos individuais. Esses grupos são separados por colchetes simples ().
No primeiro grupo procuramos as letras dos 3 meses: ([A-Z][a-z]{2})
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s (20 \d{2})
Extrair mês
- [A-Z] Esta string significa que estamos procurando uma letra maiúscula de A-Z. Por exemplo, a letra "S" de setembro. Deve-se observar que letras maiúsculas e minúsculas são tratadas separadamente.
- [a-z]{2} Esta string significa que estamos procurando duas letras minúsculas de a-z. Seria o ep de "setembro".
Então procuramos um espaço com a seguinte string: \s
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s (20 \d{2})
Data de extração
No segundo grupo procure a designação do dia em números: (0[1-9]|[12][0-9]|3[01])
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s (20 \d{2})
O dia deve ser separado por três declarações diferentes.
Como não sabemos qual data pode aparecer no documento, pode ser o primeiro dia (01) ou o último dia (31) do mês, então você tem que ser nomeadas diferentes opções.
Eles são separados pelo caractere "|".
Exemplo: (1|2|3) = 1 ou 2 ou 3.
Uma lista de caracteres permitidos segue entre colchetes. Vários colchetes correspondem a vários caracteres.
Se uma expressão descreve vários caracteres, estes são simplesmente anexados um após o outro. Em seguida, a entrada é comparada à sua expressão da esquerda para a direita.
É claro que nem todos os números precisam ser listados. No geral, entretanto, toda a expressão entre colchetes representa apenas um caractere.
-
0[1-9] Esta string significa que o número pode começar com um "0" seguido por um número de 1 a 9. Portanto, obtemos qualquer número de 01 a 09.
A string procura um padrão numérico que começa com zero. Se o seu documento normalmente tiver a data "5 de março de 2022", ou seja, sem o número "0" antes do número "5", o "0" na sequência de caracteres será omitido.
-
[12][0-9] Esta sequência de caracteres significa que o número pode começar com "1" ou "2", seguido por qualquer número de 0 a 9. O resultado pode ser qualquer número de 10 a 29 sai.
-
3[01] Esta string significa que um número pode começar com "3" seguido de "0" ou "1". O resultado pode ser 30 ou 31.
Depois de definidas as opções para o dia, deverá ser determinada a expressão para o ano.
Agora procuramos a vírgula e o espaço: ,\s
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s (20 \d{2})
Extrair ano
No último grupo procuramos o ano: (20\d{2})
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d {2 })
Começamos a procurar qualquer ano, mas sabemos que será ≥ 2.000.
- 20 Esta string significa que estamos procurando qualquer ano que comece exatamente com 20.
- \d{2} Esta string significa que estamos procurando um possível número de dois dígitos, ou seja, de "00" a "99".
Por exemplo, o caractere \d corresponde a um dígito entre 0 e 9, enquanto o caractere \d{2} corresponde a um número de dois dígitos.
Variables are read from the document and made available
Se a expressão regular agora for usada no PaperOffice, o resultado final será a data "20 de setembro de 2019".
Desta forma, qualquer data pode ser lida em um documento sem que saibamos o valor original. Esses grupos também podem ser usados em qualquer outro lugar e movidos livremente para ler outros formatos de data.
Aqui está outro exemplo:
Invoices with different formats can be easily read
A data começa com o dia, seguido do mês, composto por letras, mas a primeira letra é sempre maiúscula, seguida de um ponto final, outro espaço e depois o ano.
Para extrair esta data pode-se utilizar a expressão regular (REGEX) que acabamos de descrever, com um preenchimento adicional, pois no segundo exemplo o "ponto" é dado após o mês.
Isso pode ser especificado com a seguinte sequência de caracteres: \.
Portanto, a expressão completa fica assim:
(0[1-9]|[12][0-9]|3[01])\s([A-Z][a-z]{2})\.\s(20\d{2 })
Você sempre pode validar seu regex criado acessando a página https://regex101.com para validá-lo junto com seu texto de inserção. Regex101 não apenas verificará se sua regex está correta, mas também explicará a maior parte da expressão regular para você.
E assim você pode usar diferentes conjuntos de caracteres para qualquer coisa.