Come posso estrarre informazioni dal mio documento utilizzando REGEX?
Esempi pratici
Nel presente articolo, dimostriamo come è possibile estrarre qualsiasi dato dal documento grazie alle espressioni regolari multi-elemento in PaperOffice e memorizzarlo automaticamente come parola chiave per il documento.
Di seguito abbiamo creato un documento di esempio con una data specifica. Questo documento è una fattura. Lo schema della data sul nostro documento è formattato in questo modo:
Extract information automatically from invoices
Mese, composto da lettere, ma la prima lettera è sempre maiuscola, seguita da uno spazio, poi il giorno seguito da una virgola, un altro spazio e poi l'anno.
Ad esempio: 20 settembre 2019 o 05 marzo 2022
Per estrarre questa data possiamo utilizzare la seguente espressione regolare (REGEX):
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d {2 })
Scomponiamo l'espressione in singoli gruppi. Questi gruppi sono separati da parentesi quadre ().
Nel primo gruppo cerchiamo le lettere dei 3 mesi: ([A-Z][a-z]{2})
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s (20 \d{2})
Estrai mese
- [A-Z] Questa stringa significa che stiamo cercando una lettera maiuscola dalla A-Z. Ad esempio, la lettera "S" di Sept. Va notato che le lettere maiuscole e minuscole vengono trattate separatamente.
- [a-z]{2} Questa stringa significa che stiamo cercando due lettere minuscole dalla a-z. Sarebbe ep da "Sep".
Quindi cerchiamo uno spazio con la seguente stringa: \s
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s (20 \d{2})
Estrai data
Nel secondo gruppo cerca la designazione del giorno in numeri: (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})
Il giorno deve essere separato da tre dichiarazioni diverse.
Poiché non sappiamo quale data può apparire nel documento, può essere il primo giorno (01) o l'ultimo giorno (31) del mese, quindi tu devono essere denominate di conseguenza diverse opzioni.
Questi sono separati dal carattere "|".
Esempio: (1|2|3) = 1 o 2 o 3.
Segue tra parentesi quadre un elenco di caratteri consentiti. Più parentesi quadre corrispondono a più caratteri.
Se un'espressione deve descrivere più caratteri, questi vengono semplicemente uniti uno dopo l'altro. Quindi l'input viene confrontato con la tua espressione da sinistra a destra.
Naturalmente non tutti i numeri devono essere elencati. Nel complesso, tuttavia, l'intera espressione tra parentesi rappresenta un solo carattere.
-
0[1-9] Questa stringa significa che il numero può iniziare con uno "0" seguito da un numero da 1 a 9. Quindi otteniamo qualsiasi numero compreso tra 01 e 09. li>
La stringa cerca uno schema numerico che inizia con uno zero. Se normalmente il vostro documento porta la data "5. marzo 2022", cioè senza la cifra "0" davanti alla cifra "5", lo "0" nella stringa di caratteri viene omesso.
-
[12][0-9] Questa stringa di caratteri significa che il numero può iniziare con un "1" o un "2", seguito da qualsiasi numero compreso tra 0 e 9. Il risultato può essere qualsiasi esce il numero da 10 a 29.
-
3[01] Questa stringa significa che un numero può iniziare con un "3" seguito da uno "0" o da un "1". Il risultato potrebbe essere 30 o 31.
Dopo aver definito le opzioni per il giorno, è necessario determinare l'espressione per l'anno.
Ora cerchiamo la virgola e lo spazio: ,\s
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s (20 \d{2})
Estrai anno
Nell'ultimo gruppo cerchiamo l'anno: (20\d{2})
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d {2 })
Iniziamo a cercare un anno qualsiasi, ma sappiamo che sarà ≥ 2000.
- 20 Questa stringa significa che stiamo cercando qualsiasi anno che inizi esattamente con 20.
- \d{2} Questa stringa significa che stiamo cercando un possibile numero a due cifre, cioè da "00" a "99".
Ad esempio, il carattere \d corrisponde a una cifra compresa tra 0 e 9, mentre il carattere \d{2} corrisponde a un numero a due cifre.
Variables are read from the document and made available
Se l'espressione regolare viene ora utilizzata in PaperOffice, il risultato finale è la data "20 settembre 2019".
In questo modo, qualsiasi data può essere letta da un documento senza che noi ne conosciamo il valore originale. Questi gruppi possono essere utilizzati anche altrove e spostati liberamente per leggere altri formati di data.
Ecco un altro esempio:
Invoices with different formats can be easily read
La data inizia con il giorno, seguito dal mese, composto da lettere, ma la prima lettera è sempre maiuscola, seguita da un punto, un altro spazio e poi l'anno.
Per estrarre questa data è possibile utilizzare l'espressione regolare (REGEX) appena descritta, con un ulteriore completamento, poiché nel secondo esempio il "punto" viene fornito dopo il mese.
Questo può essere specificato con la seguente stringa di caratteri: \.
Quindi l'espressione completa assomiglia a questa:
(0[1-9]|[12][0-9]|3[01])\s([A-Z][a-z]{2})\.\s(20\d{2 })
Puoi sempre convalidare la tua regex creata andando alla pagina https://regex101.com per convalidarla insieme a il tuo Inserisci testo. Regex101 non solo controllerà se la tua espressione regolare è corretta, ma ti spiegherà la maggior parte dell'espressione regolare.
Quindi puoi utilizzare i diversi set di caratteri per qualsiasi cosa.