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 |