Cómo usar expresiones regulares

En este tutorial vamos a explicar como utilizar expresiones regulares para aplicar en la herramienta, en filtros de tablas como URLs, SERP-Snippets o Palabras clave

¿Qué es una expresión regular?

Una expresión regular se utiliza para chequear o verificar un patrón . Son normalmente utilizadas para filtrar elementos y encontrar coincidencias para operar en distintos entornos:

  • En Analytics: podrías usar regex (expresiones regulares) para segmentar el tráfico
  • En Htaccess: podrías trabajar la reescritura de URLs de forma más eficiente
  • En Sistrix: filtrar nuestros informes en los que haya URLs, snippets o palabras clave

Las expresiones regulares o regex pueden usarse en distintos lenguajes de programación. Para este tutorial nos vamos a basar en Perl, que es la sintaxis en la que se basa la funcionalidad de regex que ya tenéis disponible en Sistrix.

¿Cómo construimos expresiones regulares?

Lo vamos a hacer mediante el uso de Caracteres, Agrupaciones, Cuantificadores y Clases, que es la sintaxis con la que vamos a poder construir expresiones:

Sintaxis para crear una expresión regular
CaracteresComportamientoEjemplo
?Busca el carácter precedente una o ninguna vezhttps?
*Busca el carácter precedente ninguna o mas veces30*
+Busca el carácter precedente una o mas veces[0-9]+
|Busca un elemento u otro (or)(jpg|jpeg)
^Indica el inicio del patrón^https
$Indica el final del patrónhtml$
.Busca cualquier caracter (comodín)4..
\No interpreta un carácter especial (escapar caracteres)\/
Opciones de agrupación para expresiones regulares
AgrupaciónComportamientoEjemplo
( )Captura el contenido concreto(sistrix)
Coincide con sistrix
[ ]Captura los caracteres dentro del corchete[0-9]
Coincide con cualquier carácter que sea un número
[a-z]
Coincide con cualquier letra minúscula
{ }Indica el número de repeticiones mínimo y máximo[0-9]{2}
Coincide con cualquier número repetido 2 veces

.{1,3} Coincide con cualquier carácter repetido entre 1 y 3 veces

Para este tutorial no vamos a usar Cuantificadores, pero consideramos interesante que conozcas de su existencia para otros usos que hagas en otros entornos:

Cuantificadores para expresiones regulares
CuantificadoresComportamiento
\wBusca carácter tipo letra, dígito o _
\dBusca carácter tipo dígito
\sBusca carácter tipo espacio
\bIndica principio o final de una palabra
\WBusca carácter que no sea tipo letra, dígito o _
\DBusca carácter que no sea tipo dígito
\SBusca carácter que no sea tipo espacio

Ejemplos SEO con expresiones regulares

Para poder usar los ejemplos que te proponemos, antes debes entrar en la sección de «Palabras clave» y usar uno de estos filtros: Palabra Clave, URL o Título

Filtrar palabras clave con expresiones regulares

Para acceder a esta opción tan solo hay que analizar un dominio 1, entrar en Palabras Clave 2 y acceder al selector de Filtros 3

Y posteriormente, usar el filtro Palabra clave> Expresiones regulares 4.

A continuación te proponemos distintos casos de uso en los que podrás aplicar estas expresiones para exprimir los análisis de palabras clave de tus proyectos o cuando analices a la competencia.

Incluir o excluir el nombre de marca

Imaginemos que somos una marca en la que existen varias formas de denominar la marca, podemos crear una expresión regular para agrupar todas las palabras que consideremos keywords brand

Por ejemplo, multiopticas.com puede tener como palabras de marca

multiopticas, multi opticas, mo, mó

Usamos la expresión siguiente:

.*(multiopticas|multi|mo|mó).*

Los resultados que veríamos serían los siguientes:

También es posible hacer el filtro para excluir las brand keywords, a través de la siguiente expresión, que nos dejará ver únicamente palabras clave genéricas:

^(?!.*(multiopticas|multi|mo|mó).*?)

Incluir o excluir errores de marca

Puede ocurrir que nos encontremos con marcas que generan errores ortográficos o errores a la hora de teclear la marca, como puede ser Ryanair.

Algunos ejemplos de nombre de marca que usan los usuarios para buscar la aerolínea serían:

  • ryanair
  • rayaner
  • ryan ir
  • rayan ir
  • rayana eir
  • raya nair
  • rayan ari
  • rayar air

Hemos identificado más de 35 nombres de marca que podemos capturar usando una expresión regular:

Para incluir todas las variantes de marca:

(r|t)[hzeuayi]?[naiy].?[an]?[airn].?(r|t|air)?(e|lines| )?(line|ir)?

Para excluir todas las variantes de marca:

^((?!(r|t)[hzeuayi]?[naiy].?[an]?[airn].?(r|t|air)?(e|lines| )?(line|ir)?).)*$

Por supuesto a este listado se le pueden seguir aplicando otros filtros como «contiene», «no contiene», «acaba en» o «empieza por».

Incluir o Excluir palabras acabadas en distintas palabras

Para buscar una única palabra para incluir o excluir nos basta con el filtro simple. Pero si queremos buscar varias condiciones, por ejemplo, todas las palabras que empiecen por «comprar» y acaben en «online», podemos usar:

^comprar.*online$

Si lo aplicamos a una juguetería online nos devolvería los siguientes resultados:

Incluir o Excluir palabras que empiecen por distintas palabras

También puede ser especialmente interesante, desde el punto de vista de un comparador, poder filtrar las palabras que contengan varios nombres de marca.

Por ejemplo con tiendeo.com podemos hacer una expresión regular que agrupe por los criterios que queramos. En este caso, cualquier palabra clave que comience con cualquiera de las marcas que aparecen en los paréntesis:

^(carrefour|aurgi|alcampo|aki|ikea|bbva|bmw|audi).*

De la misma manera, se puede usar para excluirlas:

^(?!(carrefour|aurgi|alcampo|aki|ikea|bbva|bmw|audi).*)

Incluir o Excluir palabras relacionadas con características concretas

Podemos hacer el ejemplo con una característica presente en cualquier proyecto: el precio

Existen múltiples búsquedas que hacen referencia al precio, como pueden ser «barato», «economico», «oferta», «outlet», «cupon», «rebaja», «low cost«, etc.

Si los queremos excluir podemos usar la siguiente expresión:

.*(barat|economic|oferta|outlet|precio).*

Aprovechando las columnas dinámicas de la tabla podemos ordenar los datos por volumen de búsqueda descendente simplemente clicando en la cabecera de la columna.

En otros casos podremos usar otras características como: colores, formas, tallas, destinatarios, etc.

Incluir o Excluir palabras que contengan provincias españolas y sus misspelling típicos

En muchos proyectos es necesario hacer un seguimiento de la presencia local por lo que podemos usar regex para agrupar las provincias, ciudades, entidades, etc.

En este ejemplo vamos a usar las provincias y los errores ortográficos habituales para construir una expresión que nos filtre qué palabras clave contienen una provincia.

.*(alava|álava|a coruña|coruña|albacete|alicante|alacant|almeria|almería|asturias|ávila|avila|badajoz|islas baleares|baleares|balears|barcelona|bcn|barna|burgos|caceres|cáceres|cadiz|cádiz|cantabria|castellon|castellón|ciudad real|córdoba|cordoba|cuenca|girona|gerona|granada|guadalajara|guipuzcua|guipuzcúa|gipuzkoa|gipuzcua|huelva|huesca|jaen|jaén|la rioja|rioja|las palmas|palmas|las palmas de gran canaria|leon|león|lerida|lleida|lérida|lugo|madrid|málaga|malaga|murcia|navarra|orense|ourense|palencia|pontevedra|salamanca|segovia|sevilla|soria|tarragona|tenerife|santa cruz|santa cruz de tenerife|teruel|toledo|valencia|valladolid|vizcaya|bizkaia|zamora|zaragoza|ceuta|melilla).*

Cualquier ecommerce o comparador con presencia física podrá hacer uso de esta expresión para excluir las provincias e incluso añadir palabras de marca u otros parámetros a excluir:

^(?!(.*(alava|álava|a coruña|coruña|albacete|alicante|alacant|almeria|almería|asturias|ávila|avila|badajoz|islas baleares|baleares|balears|barcelona|bcn|barna|burgos|caceres|cáceres|cadiz|cádiz|cantabria|castellon|castellón|ciudad real|córdoba|cordoba|cuenca|girona|gerona|granada|guadalajara|guipuzcua|guipuzcúa|gipuzkoa|gipuzcua|huelva|huesca|jaen|jaén|la rioja|rioja|las palmas|palmas|las palmas de gran canaria|leon|león|lerida|lleida|lérida|lugo|madrid|málaga|malaga|murcia|navarra|orense|ourense|palencia|pontevedra|salamanca|segovia|sevilla|soria|tarragona|tenerife|santa cruz|santa cruz de tenerife|teruel|toledo|valencia|valladolid|vizcaya|bizkaia|zamora|zaragoza|ceuta|melilla).*))

Pero también podremos hacer las expresiones por separado, tal y como se muestra a continuación, una vez hayamos aplicado la expresión anterior, añadimos también la de excluir marca:

A partir de aquí, añadimos el Filtro Experto para indicar que las 2 expresiones son condiciones de tipo «y» en vez de tipo «o».

Filtrar urls con expresiones regulares

Los pasos a seguir para usar los filtros en URLs son igual que los de palabras clave. Sin embargo al pulsar en el selector de filtros, elegiremos el filtro URL> Expresiones regulares.

Ahora que ya sabemos usar las expresiones regulares con palabras clave, vamos a mostraros ejemplos para filtrar las URLs.

Incluir o excluir subdominios

Usos básicos si lo que queremos es analizar un dominio completo e ir agrupando URLs con el criterio de subdominios estratégicos:

(www|ayudaonline)

Podemos usar exclusión, por ejemplo, para quedarnos con los subdominios más puramente transaccionales y dejar fuera todas las palabras clave informativas que pueden venir de blogs o preguntas frecuentes.

^(?!.*(miradasdesdeelbus|ayudaonline).*?)

Incluir o excluir URLs acabadas o no en /

La página de inicio de un dominio .com, si la extensión de dominio es otra, se puede adaptar sustituyéndola:

^.*.com/$
^(?!(.*.com/$))

Cualquier URL acabada en /

.*/$

También podemos usar esta regex en la sección de Estructura > Urls > Filtro Url para centrarnos únicamente en ver qué urls acaban en slash (/).

Cualquier url no acabada en /

^(?!(.*/$))

Incluir o Excluir urls que contienen números

También podemos jugar con la sintaxis de las urls para identificar en cuáles hay números para incluirlas o excluirlas

.*-[0-9].*
^(?!(.*-[0-9].*))

Si queremos ir a algo más concreto y sabemos que existen urls que acaban en cualquier número, también las podemos incluir o excluir de este modo:

.*-[0-9]+$
^(?!(.*-[0-9]+$))

En esta casuística lo que le pedimos filtrar son cadenas que contengan series numéricas de 8 números seguidos

.*[0-9]{8}.html$
^(?!(.*[0-9]{8}.html$))

Incluir o Excluir urls con un formato concreto

Podemos usar regex también para filtrar formatos de urls, por ejemplo urls que sean htm o html, o bien, formatos pdf.

Esto no sería nada avanzado pues ya existe un filtro de «acaba en» o los de «contiene» o «no contiene»

.*htm.?$
.*pdf$

Para excluir los formatos de urls que queramos:

^(?!(.*html.?$).)
^(?!(.*pdf.?$).)

Podemos usar varios formatos en una misma expresión, cosa que tendrá mucho más valor y nos ahorrará tener que hacer varia concatenación de filtros, para incluir:

.*(htm|html)$
.*(jpg|jpeg|gif|png)$

Y también podemos combinar formatos para que sean excluidos:

^(?!(.*(htm|html)$).)
^(?!(.*htm.?)$).)
^(?!(.*(jpg|jpeg|gif|png)$).)

Incluir o Excluir urls de mercados incorrectos

Podemos hacer un seguimiento a las urls que no deberían estar posicionando en un mercado concreto, por ejemplo, urls en el mercado español que son del mercado estadounidense, mexicano o alemán

Partiendo de la siguiente casuística de urls:

Español para España /es_es/
Inglés para UK /en_gb/
Inglés para US /en_us/
Italiano para Italia /it_it/

Y así sucesivamente

Podemos usar regex para filtrar qué número de urls no son del mercado español

^(?!(.*[es]_[a-z].*)|(.*[a-z]_[es].*).)

Como se puede observar, la expresión permite la url de la home, que es donde está el selector de banderas/idiomas.

Para pulir más la expresión y dejar fuera también la home podemos ampliarla así:

^(?!(.*.com/$)|(.*[es]_[a-z].*)|(.*[a-z]_[es].*).)

Resumen

Con los parámetros que hemos visto ya estás en disposición de encontrar usos concretos dónde usar expresiones regulares y hacer más eficientes tus análisis SEO.

Puedes seguir testando y practicando con herramientas como https://www.regextester.com/ y directamente en los filtros de url, palabra clave o snippet.

A pesar de que no ofrecemos soporte para regex, seguiremos actualizando este tutorial progresivamente con nuevos usos y análisis SEO que os puedan ser de utilidad.