Como extraer información de mi documento con REGEX?
Ejemplos prácticos
En el artículo actual, le mostraremos cómo puede extraer cualquier dato del documento y agregarlo automáticamente como palabras clave al documento, utilizando expresiones regulares de múltiples elementos en PaperOffice.
A continuación, hemos creado un documento de muestra que tiene una fecha específica. En este documento, se trata de una factura. El patrón de fecha en nuestro documento está formateado de la siguiente manera:
Informationen automatisiert aus Rechnungen extrahieren
Mes, compuesto por letras, pero la primera letra siempre está en mayúscula, seguido de un espacio, luego el día seguido de una coma, otro espacio y luego el año.
Por ejemplo: Sep 20, 2019 o Mär 05, 2022
Para extraer esta fecha, podemos usar la siguiente expresión regular (REGEX):
([A-Z][a-zä]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d{2})
Descompongamos la expresión en grupos separados por paréntesis simples ().
En el primer grupo buscamos las 3 letras del mes: ([A-Z][a-zä]{2})
([A-Z][a-zä]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d{2})
Extrayendo el mes
- [A-Z] Esta cadena significa que estamos buscando una letra mayúscula de A-Z. Por ejemplo, la letra “S” de Sept. Tenga en cuenta que se distingue entre mayúsculas y minúsculas.
- [a-zä]{2} Esta cadena significa que estamos buscando dos letras minúsculas de a-z y también la “ä” (para el nombre del mes en alemán “März”). Esto sería la ep de “Sep” o la är de “Mär” en alemán.
Luego buscamos un espacio en blanco con la siguiente cadena: \s
([A-Z][a-zä]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d{2})
Extrayendo el día
En el segundo grupo buscamos el número del día: (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})
La indicación del día debe dividirse en tres instrucciones diferentes.
Como no sabemos qué fecha puede haber en el documento, puede ser el primer día (01) o incluso el último día (31) del mes, por lo que deben especificarse diferentes opciones según corresponda.
Estas se separan con el símbolo “|”.
Ejemplo: (1|2|3) = 1 o 2 o 3.
Dentro de los corchetes, hay una lista de caracteres permitidos. Varios corchetes cuadrados corresponden a varios caracteres. Si una expresión describe varios caracteres, simplemente se colocan uno a continuación del otro. Luego, la entrada se compara con su expresión de izquierda a derecha.
Por supuesto, tampoco siempre deben indicarse todos los números. En total, la expresión entre paréntesis representa solo un carácter.
- 0[1-9] Esta cadena significa que el número puede comenzar con un “0”, seguido de un número del 1 al 9. Recibiremos cualquier número del 01 al 09.
La cadena busca un patrón de número que comience con un cero. Si su documento normalmente contiene una indicación de fecha “5. März 2022”, es decir, sin el número “0” antes del número “5”, se eliminará el “0” en la cadena.
- [12][0-9] Esta cadena significa que el número puede comenzar con un “1” o un “2”, seguido de cualquier número del 0 al 9. Como resultado, puede haber cualquier número del 10 al 29.
- 3[01] Esta cadena significa que el número puede comenzar con un “3”, seguido de un “0” o un “1”. Como resultado, podría ser 30 o 31.
Después de definir las opciones para el día, debemos especificar la expresión para el año.
Luego buscamos la coma y el espacio en blanco: ,\s
([A-Z][a-zä]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d{2})
Extrayendo el año
En el último grupo buscamos el año: (20\d{2})
([A-Z][a-zä]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d{2})
Comenzamos buscando cualquier número de año, pero sabemos que será ≥ 2000.
- 20 Esta cadena significa que buscamos cualquier número de año que comience exactamente con 20.
- \d{2} Esta cadena significa que buscamos un posible número de dos dígitos, es decir, de "00" a "99".
El símbolo \d, por ejemplo, representa un dígito del 0 al 9, nuevamente, el símbolo \d{2} busca un número de dos dígitos.
Variablen werden aus dem Dokument ausgelesen und bereitgestellt
Si ahora se aplica la expresión regular en PaperOffice, el resultado final es la fecha "Sep 20, 2019".
De esta manera, se puede extraer cualquier fecha de un documento, sin necesidad de conocer el valor original. Estos grupos también se pueden usar en cualquier otro lugar y mover libremente para extraer otros formatos de fecha.
Aquí hay otro ejemplo:
Rechnungen mit verschiedenen Formaten können leicht ausgelesen werden
La fecha comienza con el día, seguido del mes, compuesto por letras, pero la primera letra siempre está en mayúscula, luego hay un punto, otro espacio y luego el año.