
Mide y Analiza: las expresiones regulares o RegEx
7 julio 2010
Para ser un pez payaso, tiene poca gracia» (Buscando a Nemo)
El otro día un amigo me dijo que al empezar a utilizar las expresiones regulares se sentía como si escribiera en chino, pero que al final si las dominas puedes ser el amo del universo de Google Analytics. Tiene toda la razón, yo desde que las utilizo necesito mucho menos tiempo para lograr recolectar los datos del análisis, casi siempre lo hago desde la API de GA, pero me sacan de determinados apuros al diseñar perfiles customizados, en la creación de objetivos o funnels, en los segmentos avanzados y en los informes cuando quiero filtrar los datos sin tener que exportarlos a Excel.
¿Qué son las expresiones regulares? En inglés RegEx. Pues son expresiones que nos permiten mediante un patrón de búsqueda con caracteres especiales contrastar un texto. Son muy útiles y cómodas para hacer filtrado y obtener unos resultados específicos. Pero como funcionan con reglas especiales, como decía al inicio, son algo complicadas, por lo menos al principio.
¿Y cuáles son estas expresiones? Explicaré las que conforman la base:
- La barra o slash quita el comodín de los caracteres; es decir, si alguno de los caracteres que se utilizan en las expresiones regulares queremos que funcione como lo que realmente es.
- . El punto indica comodín de un carácter. Por ejemplo, si ponemos /clinicaveterinaria/.ato valdría para filtrar por /clinicaveterinaria/pato y /clinicaveterinaria/gato
- ^ El acento cirílico indica el principio del campo. Se utiliza mucho para filtrar por determinadas IPs en un perfil para no contar con las IPs de los empleados de la empresa. Si ponemos ^90 filtraría por todas las IPs que empiecen por 90. Por ejemplo, si queremos que únicamente obtengamos resultados del subdirectorio /contacto/ deberemos indicar ^/contacto/ porque si solamente ponemos /contacto/ también cogería por ejemplo /clínica/contacto.
- $ El signo dólar indica final del campo, no tomará nada que contenga algún carácter después de la condición. Si quiero tomar las keywords que terminan con mi marca, filtraremos por marca$ y como resultado saldrán fútbol marca o resultados marca.
- ? El signo de final de interrogación indica que el carácter que va justo antes del signo puede existir o no. Se utiliza para tener controlados determinados errores ortográficos. Por ejemplo, si en el informe de keywords de mi blog pongo Gemm?a, los resultados contendrán tanto las keywords que contengan Gema como las que contienen Gemma
- | El signo pipe, es el O» por excelencia. Es decir, toma únicamente los contenidos que cumplan una condición u otra u otra que indiquemos en la expresión regular. Tomando el ejemplo anterior, obtendremos el mismo resultado si ponemos Gema|Gemma
- () Los paréntesis ajustan las expresiones o símbolos a lo que hay dentro de los paréntesis. Se utiliza mucho en combinación con el signo anterior. Por ejemplo, (pre|su)fijo
- + El signo más indica que coincide con 1 o más de los caracteres anteriores. En el ejemplo de mi nombre, Gem+a coincidirá con Gema Gemma o Gemmmmmma
- [] Los corchetes indican coincidencia con uno de los elementos de la lista. Son muy útiles cuando, por ejemplo, tenemos un producto con diferentes versiones y solamente queremos saber los datos correspondientes a las primeras versiones, que comprenden del número 1 al 5 y no de las últimas versiones, la 6 y la 7. En el filtro pondremos [12345]
- – El guión indica un rango. En el ejemplo anterior, obtendríamos el mismo resultado en la búsqueda de versiones si pusiéramos [1-5]
- * El asterisco es la wildcard o comodín por excelencia, coincide con 0 o más de 1 carácter en la expresión. Es decir, si queremos recopilar todos los ficheros tipo texto del site en un informe, pondremos .*.txt$
Ambas expresiones se utilizan juntas a menudo para quitarle al punto su carácter de comodín. Por ejemplo, clinicaveterinaria.com también determinaría clinicaveterinariascom o clinicaveterinariaIcom. Si queremos que solamente recoja clinicaveterinaria.com habría que poner clinicaveterinaria.com
Cuando se utilizan los brackets, significa distinto de», por lo que si ponemos [^g]ato nos saldrá como resultado /clinicaveterinaria/pato pero no /clinicaveterinaria/gato. Este carácter ayuda también mucho en los reports de keywords, por ejemplo para coger todas las que contengan nuestra marca como primera palabra de la búsqueda: ^marca. Por ejemplo saldrían como resultado marca fútbol o marca.com o marca resultados.
Si combinamos el marcador de comienzo y el marcador de final de campo, tendremos aquellas keywords que empiezan y acaban en nuestra marca: ^marca$ solamente devolverá marca.
Google Analytics en sus informes ya asume el dominio, por lo que en nuestras búsquedas o filtros solamente se necesitan aplicar a las páginas sin el dominio. Es decir, para http://www.clinicaveterinaria.com/homepage/contacto realmente es como si se accediera solamente a /homepage/contacto sin tener en cuenta lo anterior.
Con estos caracteres para expresiones regulares se puede ir al fin del mundo 🙂 Lo interesante es combinarlos entre sí porque se nos pueden escapar de las manos ya que las expresiones regulares intentan hacer coincidir todo lo que pueden.
Por ejemplo, si tenemos páginas distintas según el país o idioma elegido por el usuario y queremos distinguir únicamente la home de cada uno de los países, habría que construir una expresión regular como esta:
^.*/.*./homepage/$
Si no ponemos el carácter de inicio ^ y de final $ la búsqueda tardará más tiempo y nos saldrán resultados que puede que no se correspondan con nuestra intención.
De esta manera, el resultado que devolverá será: /spain/homepage/ /france/homepage/ /england/homepage/ etc …
Si os interesa meteros más a fondo, aquí teneis un ebook de expresiones regulares que escribieron en lunametrics. También me gusta este tutorial.
Para probar si las expresiones regulares son correctas, en este link se pueden probar antes de utilizarlas a ver si realmente corresponden con lo que queremos seleccionar en realidad.
Para ser expresiones regulares, tienen poca gracia 🙂

