Cum extrag informații din documentul meu cu REGEX?
Exemple practice
În articolul de față vă vom arăta cum puteți extrage datele din document folosind expresii regulate complexe în PaperOffice și cum le puteți adăuga automat ca cuvinte cheie la document.
Avem un document de test care conține o dată specifică. Documentul în cauză este o factură. Formatul datei din document este următorul:
Informationen automatisiert aus Rechnungen extrahieren
Luna, formată din litere, prima literă fiind întotdeauna majusculă, urmată de un spațiu, apoi ziua, urmată de o virgulă, alt spațiu și apoi anul.
De exemplu: Sep 20, 2019 sau Mär 05, 2022
Pentru a extrage această dată, putem folosi următoarea expresie regulată (REGEX):
([A-Z][a-zä]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d{2})
Să descompunem această expresie în grupuri mai mici. Aceste grupuri sunt separate de paranteze simple ().
În primul grup căutăm cele 3 litere pentru luna: ([A-Z][a-zä]{2})
([A-Z][a-zä]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d{2})
Extragerea numelui lunii
- [A-Z] Acest șir înseamnă că căutăm o literă mare de la A-Z. De exemplu litera „S” din „Sept”. Este important să rețineți că majusculele și minusculele sunt diferențiate.
- [a-zä]{2} Acest șir înseamnă că căutăm două litere mici de la a-z sau ä (pentru numele lunii în limba germană, „März”). Aceasta poate fi „ep” din „Sep” sau „är” din „Mär”.
Apoi căutăm un spațiu folosind șirul: \s
([A-Z][a-zä]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d{2})
Extragerea zilei
În al doilea grup căutăm numele zilei în format numeric: (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})
Numărul zilei trebuie descompus în trei seturi diferite. Având în vedere că nu știm ce formate de dată pot fi prezente în document, poate apărea prima zi (01) sau ultima zi (31) a lunii, trebuie să definească opțiuni diferite. Acestea sunt separate prin caracterul „|”. De exemplu, (1|2|3) = 1 sau 2 sau 3.
În paranteze pătrate se găsește o listă de caractere permise. Mai multe paranteze pătrate corespund mai multor caractere. Dacă un șir trebuie să descrie mai multe caractere, acestea trebuie unite. Elementele din text sunt comparate cu expresia în ordine de la stânga la dreapta.
Desigur, nu trebuie neapărat să fie listate toate numerele. În total, întregul șir dintre paranteze reprezintă doar un singur caracter.
- 0[1-9] Acest șir înseamnă că numărul poate începe cu „0”, urmat de un număr între 1 și 9. Obținem astfel orice număr între 01 și 09.
Șirul caută un model de numere care începe cu zero. În cazul în care documentul dvs. conține de obicei o dată „5 Martie 2022”, fără zero în fața cifrei „5”, zero este omis în șir.
- [12][0-9] Acest șir înseamnă că numărul poate începe cu „1” sau „2”, urmat de orice număr între 0 și 9. Rezultatul poate fi un număr oricât de mare între 10 și 29.
- 3[01] Acest șir înseamnă că numărul poate începe cu „3”, urmat de „0” sau „1”. Rezultatul poate fi 30 sau 31.
După ce s-au definit opțiunile pentru zi, trebuie să definim expresia pentru an.
Acum căutăm virgula și spațiul: ,\s
([A-Z][a-zä]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d{2})
Preluarea anului
În ultimul grup căutăm anul: (20\d{2})
([A-Z][a-zä]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d{2})
Începem căutarea din orice an posibil, dar știm că Anul va fi ≥ 2000.
- 20 Acest șir înseamnă că căutăm un an oarecare, începând exact cu 20.
- \d{2} Acest șir înseamnă că căutăm un număr cu două cifre, adică de la „00” la „99”.
Caracterul \d înseamnă, de exemplu, o cifră între 0 și 9, iar caracterul \d{2} înseamnă că căutăm un număr cu două cifre.
Variablen werden aus dem Dokument ausgelesen und bereitgestellt
Când expresia regulată este aplic