3 Cuantificadores
Un elemento fundamental en las expresiones regulares, en especial para las tareas de reemplazo, está en los cuantificadores. Estos permiten marcar la posibilidad de que un carácter o expresión aparezca una o más veces.
3.1 {}
Los corchetes pueden usarse para establecer el rango de veces que un carácter o expresión puede venir dado. En primer lugar se fija y el mínimo y tras ello, separado por una coma, el máximo. Si por ejemplo tenemos la palabra book
queremos recuperar además el plural books
es posible hacerlo indicando que la s
puede no estar o estar solo una vez de esta forma book(s){0,1}
.
URL |
---|
books.google.com/?id=jhkypjgchecc |
books.google.com/?id=zaoaaaaayaaj |
books.google.com/?id=y1cndwaaqbaj |
books.google.bg/books?id=e4pjaaaamaaj |
jubileebooks.co.uk/jubilee/magazine/authors/deborah_ellis/profile.asp |
io9.com/the-book-of-strange-new-things-will-blow-you-away-1675147919 |
Los paréntesis permiten establecer de manera más precisa que se trata de la s
, pues aunque por defecto books{0,1}
también devuelve el mismo resultado aquí, en otros casos podría llevar a resultados erróneos.
3.2 ?
En relación con este ejemplo, una forma de indicar que un elemento puede estar presente una vez o ninguna es con ?
. De esta forma, la búsqueda anterior podría realizarse de manera simplificada con book(s?)
o books?
.
URL |
---|
books.google.com/?id=jhkypjgchecc |
books.google.com/?id=zaoaaaaayaaj |
books.google.com/?id=y1cndwaaqbaj |
books.google.bg/books?id=e4pjaaaamaaj |
jubileebooks.co.uk/jubilee/magazine/authors/deborah_ellis/profile.asp |
io9.com/the-book-of-strange-new-things-will-blow-you-away-1675147919 |
3.3 +
En el caso de que este carácter o expresión pueda aparecer como mínimo una vez o más se hace uso de {1,}
o, de manera más simplificada, +
. Gracias a ello podemos localizar y verificar cadenas de texto. Por ejemplo, podemos localizar en las URLs los números de control de la Library of Congress usando lccn-[a-z]+\d+
.
URL |
---|
worldcat.org/identities/lccn-no2009195364 |
worldcat.org/identities/lccn-n90609217 |
worldcat.org/identities/lccn-n92112063 |
worldcat.org/identities/lccn-nr95045397 |
worldcat.org/identities/lccn-n2007035186 |
worldcat.org/identities/lccn-n85044526 |
3.4 *
El asterisco *
funciona igual que +
, pero va un paso más allá y en lugar de exigir que como mínimo aparezca una vez puede no estar presente. Es el equivalente a {0,}
.
Su uso con el .
son de gran utilidad en las expresiones regulares, pues permiten establecer la presencia de cualquier carácter o secuencia de caracteres. Su utilidad se encuentra sobre todo con los reemplazos. Por ejemplo, con el caso anterior, podemos eliminar toda la URL y reducirla al número de control. Para ello solo hay que buscar .*lccn-
y reemplazar por lccn-
.
URL |
---|
lccn-no2009195364 |
lccn-n90609217 |
lccn-n92112063 |
lccn-nr95045397 |
lccn-n2007035186 |
lccn-n85044526 |
O incluso reducirla por completo al número reemplazando por una cadena de texto vacía.
URL |
---|
no2009195364 |
n90609217 |
n92112063 |
nr95045397 |
n2007035186 |
n85044526 |