Definiciones de expresiones regulares
Cuando se extraen entidades no lingüísticas, puede editar o añadir a la expresión regular aquellas definiciones que se utilizan para identificar las expresiones regulares. Esto se hace en la sección Definiciones de expresiones regulares de la pestaña Recursos avanzados. Consulte Acerca de los recursos avanzados para obtener más información.
El archivo está dividido en varias secciones. La primera sección se llama [macros]. Además de dicha sección, puede existir una sección adicional para cada entidad no lingüística. Puede añadir secciones a este archivo. En cada sección, las reglas están numeradas (regexp1, regexp2, etc.). Estas reglas se deben numerar de forma secuencial desde 1–n. Toda interrupción en la numeración hará que el proceso de este archivo quede suspendido.
En determinados casos, una entidad puede depender del idioma. Se considera que una entidad depende del idioma si toma un valor que no sea 0 como parámetro de idioma en el archivo de configuración. Consulte Configuración para obtener más información. Cuando una entidad depende del idioma, el idioma se debe utilizar como prefijo del nombre de la sección, como por ejemplo [english/PhoneNumber]. Esta sección contendrá reglas que se apliquen solo a los números de teléfono ingleses si se asigna el valor de 2 al idioma de la entidad PhoneNumber.
Importante: Si realiza cambios en este archivo o en cualquier otro en el editor, y el motor de extracción deja de funcionar como se esperaba, utilice la opción Restablecer originales en la barra de herramientas para restaurar el archivo con el contenido original enviado con el producto. Es necesario estar familiarizado con las expresiones regulares para trabajar con este archivo. Si necesita ayuda adicional en esta área, póngase en contacto con IBM® Corp. para obtener ayuda.
Caracteres especiales. [] {} () \ * + ? | ^ $
Todos los caracteres coinciden consigo mismos excepto por los siguientes caracteres especiales, que se utilizan con un propósito específico en una expresión: .[{()\*+?|^$ Para utilizar estos caracteres de esta forma, deben estar precedidos de una barra inclinada invertida (\) en la definición.
Por ejemplo, si intentaba extraer direcciones web, el carácter de punto y aparte es muy importante en la entidad, por lo que debe colocar una barra inclinada invertida, así:
www\.[a-z]+\.[a-z]+
Operadores de repeticiones y cuantificadores ? + * {}
Para que las definiciones sean más flexibles, puede utilizar varios comodines que sean estándares en las expresiones regulares. Son * ? +
-
Asterisco * indica que hay cero o más elementos de la cadena precedente. Por ejemplo,
ab*ccoincide con "ac", "abc", "abbbc", etc. -
El signo más + indica que hay uno o más elementos de la cadena precedente. Por ejemplo,
ab+ccoincide con "abc", "abbc", "abbbc", pero no con "ac". -
Signo de interrogación ? indica que hay cero o un elementos de la cadena precedente. Por ejemplo,
modell?ingcoincide tanto con "modelado" como con "modelado". -
Limitar la repetición mediante llaves {} indica los límites de la repetición. Por ejemplo:
[0-9]{n}coincide con un dígito que se repite exactamente n veces. Por ejemplo,[0-9]{4}coincidirá con “1998”, pero no con “33” o con “19983”.[0-9]{n}coincide con un dígito que se repite n o más veces. Por ejemplo,[0-9]{3,}coincidirá con “199” o con “1998”, pero no con “19”.[0-9]{n,m}coincide con un dígito que se repite entre n y m veces, inclusive. Por ejemplo,[0-9]{3,5}coincidirá con “199”, “1998” o “19983”, pero no con “19” ni con “199835”.
Guiones y espacios opcionales
En algunos casos, puede que necesite incluir un espacio opcional en una definición. Por ejemplo, si desea extraer monedas como "pesos uruguayos", "peso uruguayo", "pesos uruguay", "peso uruguay", "pesos" o "peso", tendrá que afrontar el hecho de que puede haber dos palabras separadas por un espacio. En este caso, esta definición se escribirá como (uruguayo |uruguay )?pesos?. Puesto que uruguayo o uruguay van seguidos de un espacio cuando se utilizan con pesos/peso, el espacio opcional debe definirse en la secuencia opcional (uruguayo |uruguay ). Si el espacio no estaba en la secuencia opcional como (uruguayan|uruguay)?
pesos?, no coincidiría en “pesos” o “peso” ya que el espacio sería requerido.
Si busca una serie de objetos que incluyen guiones (-) en una lista, el guión debe estar definido al final. Por ejemplo, si busca una coma (,) o un guión (-), utilice [,-] pero nunca [-,].
Orden de las cadenas en listas y macros
Siempre debe definir la secuencia más larga antes que la más corta; de lo contrario, nunca se detectará la más larga, puesto que la coincidencia se producirá en la secuencia más corta. Por ejemplo, si estuviera buscando cadenas “trillón” o “trillo”, entonces “trillón” debe definirse antes que “trillo”. Así pues, (teléfono|tele) y no (tele|teléfono). Esto también se aplica a las macros, puesto que estas son listas de cadenas.
Orden de las reglas en la sección de definición
Defina una regla por línea. En cada sección, las reglas están numeradas (regexp1, regexp2, etc.). Estas reglas se deben numerar de forma secuencial desde 1–n. Toda interrupción en la numeración hará que el proceso de este archivo quede suspendido. Para desactivar una entrada, coloque un símbolo de número (#) al principio de cada línea que se utiliza para definir la expresión regular. Para activar una entrada, elimine el símbolo de número (#) del principio de la línea.
En cada sección, las reglas más específicas deben definirse antes que las más generales para asegurar un proceso apropiado. Por ejemplo, si se está buscando una fecha en el formato “mes año” y en el formato “mes”, se debe definir la regla “mes año” antes que la regla “mes”. Este es un ejemplo de cómo debe definirse:
#@# January 1932
regexp1=$(MONTH),? [0-9]{4}
#@# January
regexp2=$(MONTH)
y no
#@# January
regexp1=$(MONTH)
#@# January 1932
regexp2=$(MONTH),? [0-9]{4}
Uso de macros en las reglas
Cuando se utiliza una secuencia específica en varias reglas, puede utilizar una macro. Así pues, si necesita cambiar la definición de esta secuencia, deberá cambiarla solo una vez, y no es necesario que lo haga en todas las reglas a las que haga referencia. Por ejemplo, imagine que tiene la macro siguiente:
MONTH=((january|february|march|april|june|july|august|september|october|
november|december)|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(\.)?)
Siempre que se refiera al nombre de la macro, debe ir entre $(), como en: regexp1=$(MONTH)
Todas las macros deben definirse en la sección [macros].