Bases de datos bibliográficos Pascal y Francis

Búsqueda por expresiones regulares

En cómputo teórico y teoría de lenguajes formales una expresión regular, también conocida como regex, regexp1 o expresión racional,​ es una secuencia de caracteres que forma un patrón de búsqueda (1).

Según la sintaxis utilizada, es posible repetir cero, una o varias veces cadenas de caracteres de una palabra, lo que conduce a definir un conjunto de palabras cuya ortografía es próxima.

Las expresiones regulares utilizadas en las ecuaciones de búsqueda permiten encontrar resultados pese a los errores de ortografía y deben ser encapsuladas con barras inclinadas, de la siguiente manera:
au.\*:/joh?n(ath[oa]n)/

También permiten superar un límite del motor de búsqueda Elasticsearch, a saber, la imposibilidad de utilizar un truncamiento en una búsqueda por expresión exacta o de tipo frase (búsqueda por proximidad). Esto puede ser útil, por ejemplo, para buscar todas las publicaciones de un autor cuyo nombre es común.
Para buscar los documentos vinculados con “Martin J.”, se escribirá :
au.raw:/[Mm][Aa][Rr][Tt][Ii][Nn][, ]+[Jj].*/

Construir una expresión regular, paso a paso
En ese párrafo, vamos a reanudar fase por fase la construcción de la expresión regular que permite encontrar los documentos vinculados con el autor “Martin J.”.

au.raw:/[Mm][Aa][Rr][Tt][Ii][Nn][, ]+[Jj].*/
Hay normas específicas para la escritura de las expresiones regulares. Únicamente para las expresiones regulares:
? significa 0 o 1 vez el ítem anterior
* significa 0 o n veces el ítem anterior
+ significa 1 o n veces el ítem anterior.

En el ejemplo que estamos estudiando, primero se debe elegir si utilizamos todos los subíndices del índice autor “au” o si elegimos un solo subíndice. En el ejemplo estudiado, es oportuno tomar únicamente en cuenta el subíndice “raw” porque no segmenta cada término y no hace ningún procesamiento sobre las cadenas de caracteres. De este modo el nombre del autor, « Martin J. », no es transformado.

Para ir más lejos sobre índices y subíndices, Véase : Búsqueda experta (párrafo 9)

1) Tras la selección efectuada, escribiremos
au.raw :

2) La expresión regular se escribe siempre entre dos barras inclinadas
au.raw:/ /

3) Cada letra puede escribirse mayúscula o minúscula
au.raw:/[Mm][Aa][Rr][Tt][Ii][Nn]/

4) El nombre nombre puede ir seguido de una coma o de un espacio
au.raw:/[Mm][Aa][Rr][Tt][Ii][Nn][, ]/

5) El nombre debe ir seguido con la inicial J mayúscula o minúscula
au.raw:/[Mm][Aa][Rr][Tt][Ii][Nn][, ]+[Jj]/

6) La primera letra del nombre de pila va seguida o no de un punto.
au.raw:/[Mm][Aa][Rr][Tt][Ii][Nn][, ]+[Jj].*/

Los corchetes se utilizan para encontrar las posibilidades de escritura relativas a un único carácter mientras que los paréntesis permiten agrupar uno o más caracteres.

En la expresión regular siguiente:

au.\*:/joh?n(ath[oa]n)/

? indica que la letra “h” debe ser ausente o presente una vez,
[oa] significa que habrá un “o” o un “a”, en este lugar en el nombre del autor.
Con esta expresión regular, se podrá encontrar los autores que tengan por nombre: jonathan, jonathon, johnathon o johnathan.

Cabe señalar que esta búsqueda en el índice autor, “au”, no es sólo relevante para el subíndice “raw”, pero también todos los subíndices declarados para este índice, a saber: “raw”, “fold” y “rich”.

Para ir más lejos, Véase : Lista de índices y de subíndices

Si se desea tomar en cuenta más de dos opciones para un carácter, se puede escribir de la manera siguiente:
(é|e|è)

Esta forma de escritura permite manejar la elección entre varias formas acentuadas o las posibilidades de tener comas seguidas o precedidas de un espacio, en la estructura de los metadatos.

Para saber más sobre las normas que rigen la escritura de expresiones regulares en Elasticsearch, Véase :
https://www.elastic.co/guide/en/elasticsearch/reference/5.5/query-dsl-regexp-query.html#regexp-syntax