2 Elementos básicos
Dentro de las expresiones regulares existen varios caracteres especiales que permiten por ejemplo indicar que lo que se busca es un carácter alfanumérico o una secuencia de números, entre otras posibilidades.
2.1 .
El punto .
es uno de los caracteres fundamentales de las expresiones regulares. Es representa la presencia de un carácter de cualquier tipo. No tiene que ser ni siquiera alfanumérico. De esta forma, al buscar book.
se localizan tanto las URLs que incluyen books
como book/
.
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 |
2.2 \
No obstante, en caso de querer buscar literalmente el punto se necesita “escapar.” Mediante el uso de la barra invertida \
podemos establecer la búsqueda literal de un carácter que tiene alguna funcionalidad especial dentro de las expresiones regulares como el punto o los paréntesis. En el caso de querer buscar literalmente book.
habría que usar book\.
.
URL |
---|
facebook.com/groups/111795415601449 |
goldbook.iupac.org/s05962.html |
nfl.com/liveupdate/gamecenter/28849/nyg_gamebook.pdf |
nytimes.com/2011/02/03/books/03book.html |
greybook.cern.ch/greybook/experiment/detail?id=wa81 |
No confundir este uso de la barra invertida como método de escape con su uso para establecer clases de caracteres como las que se explican a continuación.
2.3 \d y \D
Mediante \d
se establece la búsqueda de un dígito. De esta forma no necesitas indicar un número exacto, solo que un número ha de estar presente. Por ejemplo, sabiendo que en la URL de la web del New York Times aparece el año de publicación, podemos buscar noticias publicadas entre 2010 y 2019 buscando nytimes.com/201\d
.
URL |
---|
nytimes.com/2019/05/07/opinion/data-privacy.html |
nytimes.com/2011/02/03/books/03book.html |
Con \D
el funcionamiento es justo el puesto, busca la no presencia de un digito. Esto no significa que busque solo letras. Usando el ejemplo anterior, podemos detectar si hay algún fallo en estar URLs buscando que detrás de la URL base de la página exista algo que no sea un digito con nytimes.com/\D
.
URL |
---|
nytimes.com/ 2006/02/24/sports/olympics/24skate.html |
nytimes.com/slideshow/2010/09/15/garden/0916emerson-slideshow.html |
2.4 \w y \W
Es posible buscar caracteres alfanuméricos de igual manera que antes usando \w
. Por ejemplo, ahora quiero obtener todas las URLs del New York Times que no vayan a la página principal usando www.nytimes.com/\w
.
URL |
---|
nytimes.com/2019/05/07/opinion/data-privacy.html |
nytimes.com/2011/02/03/books/03book.html |
nytimes.com/slideshow/2010/09/15/garden/0916emerson-slideshow.html |
Nuevamente, si lo ponemos en mayúscula con \W
su uso es el opuesto y busca la presencia de algo que no se de tipo alfanumérico. En este caso quiero probar a buscar en las URLs la presencia del texto viaf
seguido de algo que no sea un dígito o letra con viaf\W
.
URL |
---|
viaf.org/viaf/72689661 |
worldcat.org/identities/viaf-260281158 |
viaf.org/viaf/8648888 |
viaf.org/viaf/24934751 |
viaf.org/viaf/21209763 |
viaf.org/viaf/128732352 |
2.5 []
De manera más precisa se pueden especificar que rango de caracteres estamos buscando haciendo uso de los corchetes []
. Este representa un único elemento y en su interior se representan los diferentes valores que puede tomar. Retomando el primer ejemplo del New York Times, es posible determinar ese rango de año de manera mucho más precisa, reduciéndolo a 2011 y 2012 con nytimes.com/201[12]
. En este caso no busca 12
sino que busca la presencia del 1
o del 2
.
URL |
---|
nytimes.com/2011/02/03/books/03book.html |
Es posible todo tipo de combinaciones, incluyendo no solo caracteres alfanuméricos sino también de otro tipo. En el caso de la anterior búsqueda de viaf le podemos indicar que detrás de viaf aparezca -
o /
usando viaf[/-]
.
URL |
---|
viaf.org/viaf/72689661 |
worldcat.org/identities/viaf-260281158 |
viaf.org/viaf/8648888 |
viaf.org/viaf/24934751 |
viaf.org/viaf/21209763 |
viaf.org/viaf/128732352 |
Si quisiéramos establecer con los rango la presencia de un valor numérico cualquiera no tenemos que escribir todos ellos, se puede emplear [0-9]
, al igual que ocurre con los caracteres alfabéticos [a-z]
. Aunque en este último caso la búsqueda quedaría limitada a todos aquellos que aparezcan en minúscula, para buscar en mayúscula se usaría [A-Z]
y si queremos tener en cuenta ambos [a-zA-Z]
. De esta forma, si quisiéramos localizar las URLs que incluyen una mayúscula se puede emplear [A-Z]
.
URL |
---|
BOOKS.GOOGLE.COM |
De manera opuesta, se pueden establecer las diferentes opciones a evitar con [^]
. Por ejemplo, los artículos de New York Times que no son de 2010 ni de 2011 usando nytimes.com/201[^01]
.
URL |
---|
nytimes.com/2019/05/07/opinion/data-privacy.html |
2.6 |
Es posible combinar dos o más expresiones regulares de manera lógica y como el operador booleano OR usando la barra vertical |
. Por ejemplo, para localizar URLs que contengan .gov
o .org
se puede usar la expresión (\.gov)|(\.org)
.
URL |
---|
tyndalesploughboy.org/category/reformers |
wikidata.org/wiki/q6762899#p570 |
trs-new.jpl.nasa.gov/dspace/bitstream/2014/39501/1/05-0657.pdf |
geonames.usgs.gov/apex/f?p=gnispq:5:::no::p5_antar_id:5544 |
wikisky.org/?img_source=img_all&object=3c+236&zoom=14 |
pdxqcenter.org/hands-across-hawthorne |