Los RegEx son fáciles de aprender y sorprendentemente útiles, así que asegúrate de seguir este tutorial completo porque será una de las mejores inversiones de tiempo versus resultados en tu aventura SEO.
Esta publicación es para ayudarte a aprender expresiones regulares. No todos los RegExes funcionarán en Google Search Console, ya que utiliza una sintaxis particular.
¿Qué vas a leer?
- ¿Qué son las expresiones regulares (regex)?
- Expresiones regulares básicas
- Comienza a utilizar RegEx
- ¿Por qué aprender RegEx para SEO?
- Fundamentos de las expresiones regulares
- Otra expresión regular útil
- Flag (no aptas para GA o GSC)
- Probar tus expresiones regulares
- RegEx más utilizados
- cuantificadores
- Más personajes
- Lógica
- Más espacios en blanco
¿Qué son las expresiones regulares (regex)?
RegEx, o expresiones regulares, se utilizan para detectar patrones en secuencias de caracteres en cadenas.
Con RegEx, puede hacer coincidir fácilmente muchos resultados que tienen el mismo patrón.
Expresiones regulares básicas
. | Cualquier carácter |
.* | 0 o más caracteres |
.+ | 1 o más caracteres |
? | Carácter opcional |
^ | Comienzo de una línea |
$ | Final de una línea |
\ | Escapar de un carácter especial |
Por ejemplo, uno de los patrones más comunes que se pueden utilizar en Google Analytics es este:
.*sitio1.*|.*sitio2.*
o su equivalente:
.*sitio(1|2).*
De esta manera puedo hacer coincidir cualquiera de esos resultados:
#Coincidencia
sitio.com
sitio.fr
siteio2.es
www.sitio2.com
sitio2.es/url/
#No Coincidencia
www.google.com
RegEx no es específico de ningún lenguaje de programación. Entonces, ya sea que estés utilizando Google Analytics o programando en Python, JavaScript o Java, en algún momento necesitarás utilizar expresiones regulares.
Las expresiones regulares tienen diferentes sintaxis de un lenguaje de programación a otro. Es por ello que, si aprendes a utilizar expresiones regulares generales, no tendrás problemas para utilizarlas en cualquiera de los lenguajes de programación.
Comienza a utilizar RegEx
Esta guía lo llevará a través de los conceptos básicos de RegEx. Si quiere ir más allá, asegúrese de visitar una herramienta para desarrolladores, Regex101 , y esta web de trucos de RegEx .
No todos los RegEx son iguales
Las expresiones regulares se utilizan en la programación y el análisis de datos, y según el lenguaje de programación que utilizas o la herramienta que utilices, algunos RegEx no funcionarán.
¿Por qué aprender RegEx para SEO?
Los SEO comenzaron a utilizar Regex principalmente porque son usuarios ávidos de Google Analytics y el análisis de datos.
Luego, comenzaron a utilizarlo con fines de rastreo y extracción y, a medida que se progresa en el conocimiento de estas expresiones, comenzaron a implementarlo para desarrollar llamadas a la API.
Por ejemplo, para filtrar todo el tráfico orgánico procedente de Google, incluidos Google Search y Google images pero excluyendo Google CPC.
En este caso, iría a Acquisition > All Traffic > Source/Medium > Advanced
y usaría la expresión regular .*google.*organic.*
para filtrar los resultados.
Sé que esto es bastante básico, pero solo quería mostrar por qué necesitará absolutamente expresiones regulares un día u otro en su carrera de SEO.
Las expresiones regulares en Google Analytics son bastante limitadas en comparación con lo que realmente puede hacer con Regex.
Fundamentos de las expresiones regulares
Profundicemos en los conceptos básicos de las expresiones regulares.
Emparejar caracteres
Para hacer coincidir uno o varios caracteres, puede usar banderas como acabamos de ver. También puedes utilizar comodines u otro conjunto específico de indicaciones.
. | coincide con cualquier cosa. SE. coincidirá SEO y SEM |
| coincide con una de esas vocales. c[aio]ma coincidirá con cama , cima y coma . [aeiou] coincidiría con múltiples vocales |
[a-z] | coincide con una gama de caracteres. Esto coincidiría con cualquier carácter en minúscula del alfabeto. Para hacer coincidir cualquier carácter en mayúsculas y minúsculas, puede usar [a-z]\i o [a-zA-Z] |
[0-9] | coincide con un rango de números del 0 al 9. Puedes combinar el regEx para hacer coincidir números y letras como este: [2-5b-h] |
^ | solo coincide si comienza con la cadena. ^SEO.* coincide con SEO es fácil pero no con me gusta el SEO |
$ | solo coincide si termina con la cadena. .*regex$ coincide Iguia para principiantes de regex , pero no coincide regex para principiantes |
Abogad?s | dice que el carácter anterior «d» es opcional. Coincide Abogadas y abogados . |
OR / And Lógica
Cuando necesitas incluir uno o más resultados o fusionar múltiples condiciones en tus expresiones regulares utilizar el OR lógico. Utilizando el |
símbolo, podrás hacer coincidir múltiples condiciones.
Cuando necesite que TODAS las condiciones sean verdaderas, puede combinarlas usando una alternativa a un operador AND usando el patrón .*(?=.*pattern)(?=.*pattern).*
Por ejemplo:
python | seo | Coincidencias: python O seo . Coincidencias: trabajos de Python, trabajos de SEO , Python para SEO |
.*(?=.*python)(?=.*seo).* | Coincidencias: python Y seo . Coincidencias: Python para SEO , SEO con Python pero no coinciden con trabajos de SEO |
La sintaxis AND no es compatible con Google Analytics .
Tendrías que hacerlo de esta manera.
Cuantificadores
Los cuantificadores, o especificadores de cantidad, son útiles para indicar el número de veces que desea repetir un carácter. Esto representa el número de veces que lo anterior puede coincidir.
Una o más veces | + |
Dos veces | {2} |
De tres a cinco veces | {3,5} |
Cero o más veces | * |
una vez o ninguna | ? |
Conjuntos de caracteres negados
Cuando desees crear un conjunto de caracteres que no deseas que coincidan, debes utilizar negated character sets
. Para crearlos, puedes utilizar el carácter de intercalación dentro de un juego de caracteres ( [^]
).
[^]
coincide con la cadena que no incluye.[^aieou]
coincidir con un solo carácter que no está presente en la lista[aeiou]
;
Previsión positiva y negativa
Las búsquedas anticipadas son patrones que te indican que busques en la cadena para buscar los patrones que se especifique. Hay búsqueda anticipada positiva ( (?=)
) y búsqueda anticipada negativa ( (?!)
).
se(?=o) coincide con seo pero sem no coincide, mientras que se(?!o) no coincide con seo pero si con "se" |
Emparejamiento codicioso y perezoso
En las expresiones regulares, una coincidencia greedy
encuentran la parte más larga posible de una cadena que satisface la expresión regular. Un lazy
partido es todo lo contrario. Encuentra la parte más pequeña posible de la cadena que coincide con la expresión regular.
.* | es un emparejamiento codicioso ya que coincide con cualquier cosa. <.*> coincidirá con <h1>This is HTML</h1> |
? | es un emparejamiento perezoso. <.*?> coincidirá con <h1> |
Agrupar elementos de un RegEx
Puedes agrupar elementos de un RegEx con paréntesis ()
en un elemento llamado grupo de captura.
diego.*(maradona|rivera)
coincidiría condiego maradona
y condiego rivera
, pero nodiego gutierrez.
Otra expresión regular útil
(?<=[\/])\d{2,}
Coincide con cualquier ID numerado precedido por una barra invertida.
^\s+|\s+$
Selecciona todos los espacios en blanco al principio y al final de una cadena. Esto puede ser útil cuando se manipulan datos.
(?<=\.)(.*?)(?=\.)
Te permite extraer un nombre de dominio. Esto coincidirá con cualquier cadena entre dos puntos.
(?<=string)(.*)
Coincide con cualquier cosa después de una cadena, excluyendo esa cadena. Útil para limpiar URLs.
Flag (no aptas para GA o GSC)
Los Flags te ayudarán a determinar qué tipo de elemento combinar. Es posible que desees ignorar mayúsculas y minúsculas al hacer coincidir o hacer coincidir sólo palabras numeradas. Para hacer esto, deberás finalizar su expresión regular con una bandera como esta:
google\i
Coincide con google y Google.
Las banderas más útiles son:
\i | ignorar caso |
\g | coincide más de una vez (JavaScript) |
\d | coincide con un dígito del 0 al 9 |
\w | coincide con letras, dígitos o guiones bajos ASCII. Es lo mismo que [A-Za-z0-9_]\g |
\s | coincide con espacios en blanco |
\D | coincide con cualquier cosa que no sea un dígito del 0 al 9 |
\W | coincide con cualquier cosa que no sea una letra, dígito o guión bajo ASCII |
\S | coincide con cualquier cosa que no sea un espacio en blanco |
Probar tus expresiones regulares
Aquí hay tres sitios web para probar, guardar y compartir tus expresiones regulares.
RegEx más utilizados
cuantificadores
cuantificador | Leyenda | Ejemplo | Coincidencia de muestra |
---|---|---|---|
+ | Uno o mas | Versión \w-\w+ | Versión A-b1_1 |
{3} | exactamente tres veces | \D{3} | A B C |
{2,4} | De dos a cuatro veces | \d{2,4} | 156 |
{3,} | Tres o más veces | \w{3,} | Regex_tutorial |
* | Cero o más veces | A B C* | AAACC |
? | una vez o ninguna | plurales? | plural |
Más personajes
Personaje | Leyenda | Ejemplo | Coincidencia de muestra |
---|---|---|---|
. | Cualquier carácter excepto salto de línea | C.A | a B C |
. | Cualquier carácter excepto salto de línea | .* | cualquier hombre. |
\ . | Un punto (carácter especial: debe ser escapado por un \) | C.A | C.A |
\ | Escapa un carácter especial | \.\*\+\? \$\^\/\\ | .*+? $^/\ |
\ | Escapa un carácter especial | \[\{\(\)\}\] | [{()}] |
Lógica
Lógica | Leyenda | Ejemplo | Coincidencia de muestra |
---|---|---|---|
| | Alternancia / operando OR | 22|33 | 33 |
(…) | grupo de captura | A (no | manzana) | Apple (captura «pple») |
\1 | Contenidos del Grupo 1 | r(\w)g\1x | expresiones regulares |
\2 | Contenidos del Grupo 2 | (\d\d)\+(\d\d)=\2\+\1 | 12+65=65+12 |
(?:…) | Grupo que no captura | A(?:nt|manzana) | manzana |
Más espacios en blanco
Personaje | Leyenda | Ejemplo | Coincidencia de muestra |
---|---|---|---|
\t | Pestaña | T\t\w{2} | Pestaña |
\r | Carácter de retorno de carro | vea abajo | |
\norte | Carácter de avance de línea | vea abajo | |
\r\n | Separador de línea en Windows | AB\r\nCD | CD AB |
\NORTE | Perl, PCRE (C, PHP, R…): un carácter que no es un salto de línea | \N+ | A B C |
\h | Perl, PCRE (C, PHP, R…), Java: un carácter de espacio en blanco horizontal: tabulador o separador de espacios Unicode | ||
\H | Un carácter que no es un espacio en blanco horizontal | ||
\v | .NET, JavaScript, Python, Ruby: pestaña vertical | ||
\v | Perl, PCRE (C, PHP, R…), Java: un carácter de espacio en blanco vertical: avance de línea, retorno de carro, tabulación vertical, avance de formulario, párrafo o separador de línea | ||
\V | Perl, PCRE (C, PHP, R…), Java: cualquier carácter que no sea un espacio en blanco vertical | ||
\R | Perl, PCRE (C, PHP, R…), Java: un salto de línea (retorno de carro + par de avance de línea, y todos los caracteres coincidentes con \v) |
Muy bien explicado todo, muchas gracias 🙂
Hola, muy buen post, pero me surgen dudas…
si yo quisiese que en analytics me cogiese urls como
https://ockier.es/blog/guia-para-principiantes-de-regex-para-seos/, pero no https://ockier.es/blog/
¿Cómo tendría que hacerlo?
Gracias
Hola Victoria,
Muchas gracias por tu consulta. Hacerlo con regex es complicar las cosas, es más fácil hacerlo con simples condicionales. Pero aún así, el regex quedaría algo así:
\/[^\/]+\/[^\/]+\/([^\/]+).*
Espero que esto te ayude.
Salu2