RegEx (Expresiones regulares)

De Seobility Wiki
Saltar a: navegación, buscar

¿Qué son las regex o expresiones regulares?

Las Regex o expresiones regulares (llamadas “regex”, por “regular expression” en inglés) son un método utilizado por las y los programadores para definir patrones de búsqueda. Es muy útil para extraer información de grandes bloques de datos, ya sea en forma de texto sin formato, archivos o código. De este modo, nos aseguramos un sistema mucho más eficiente y flexible que una simple búsqueda de cadena de caracteres, como las que se hacen normalmente en los buscadores.

Por ejemplo, una expresión regular se usa cuando una política de contraseñas establece determinadas combinaciones de caracteres para ellas. En tal caso, la expresión se vería de esta manera:

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"

Esta regla contiene numerosas especificaciones, como la longitud mínima de 8 caracteres y el uso de mayúsculas y minúsculas. La expresión .{8,}, en este caso, significa que cualquier carácter (simbolizado por el punto) debe aparecer ocho veces o más ({8,}).

Componentes de las regex

Las expresiones regulares se suelen encontrar en muchos lenguajes de programación diferentes, pero su implementación exacta puede diferir. Esto significa que, ocasionalmente, algunos caracteres pueden usarse de diferentes maneras según sea su implementación. Sin embargo, a veces un carácter tiene un uso relativamente universal, como veremos a continuación con algunos componentes comunes.

Anclas

Los anclas son caracteres que especifican la ubicación del carácter buscado dentro de una cadena particular. Las regex se crearon originalmente para sistemas basados en líneas, por lo que una gran cantidad de ellas se desarrollaron en torno a la búsqueda dentro de las líneas. Por ejemplo, para localizar un carácter "A" en una cadena, se pueden usar los caracteres de la siguiente lista para encontrar una coincidencia:

  • ^A - Coincidencia al comienzo de una línea.
  • A$ - Coincidencia al final de una línea.

Conjuntos de caracteres

Los conjuntos de caracteres permiten definir parámetros explícitos para el tipo de texto que se buscará. Por lo tanto, se pueden buscar rangos numéricos utilizando [0-9]. Sin embargo, regex admite la coincidencia de caracteres, por lo que puede ser útil para encontrar rangos de letras o para admitir ortografías alternativas. Por ejemplo, gr[ae]y coincidirá tanto con 'gray' como con 'grey'.

  • [0-9]: Coincidencia en un rango de números del 0 al 9.
  • [a-z] - Combina letras minúsculas de a-z.
  • [A-Z]: Combina letras mayúsculas de la A a la Z.
  • [.] - Coincide con cualquier carácter excepto los de salto de línea.

Modificadores

Se usan para alterar el comportamiento de las cadenas de regex. Por lo general, se colocan entre paréntesis y comienzan con un signo de interrogación. Muchos modificadores dependen de la implementación, pero algunos caracteres de muestra podrían ser:

  • (?c) - Desactiva la distinción entre mayúsculas y minúsculas.
  • (?s) - Hace que el carácter de punto incluya coincidencias para los caracteres de salto de línea.

Encadenamiento de expresiones regulares

Las expresiones regulares se pueden encadenar usando el carácter de barra vertical (|). Esto permite llevar a cabo múltiples opciones de búsqueda en una sola cadena de expresiones regulares. Por ejemplo, '(cadena1|cadena2|cadena3)' buscará 'cadena1', 'cadena2' y 'cadena3' dentro de la misma consulta, en lugar de tener que ejecutar tres consultas separadas. De este modo, se pueden encadenar junto con cualquier otro carácter regex y prácticamente sin limitaciones en cuanto a cantidad.

Cuantificadores en expresiones regulares

Permiten definir cuántas veces se desea que coincida una cadena de expresiones regulares en particular. Por regla general, los cuantificadores pueden ser de dos tipos: lazy (perezosos) y greedy (codiciosos).

De forma predeterminada, las expresiones regulares greedy intentan acaparar el mayor número de caracteres y coincidirán tanto como sea posible, lo que no siempre es el comportamiento deseado. A su vez, los cuantificadores lazy intentan subsanarlo, limitando la cantidad de coincidencias, y pueden precisar cuántas veces se encuentran coincidencias con otros caracteres limitantes:

  • * - Coincide 0 o más veces.
  • + - Coincide 1 o más veces
  • { n } - Coincide exactamente n veces.

Regex avanzadas

Las expresiones regulares admiten conceptos avanzados como recursividad, referencias inversas, agrupación, subrutinas, condicionales, etc. Estas funciones permiten encontrar información muy específica dentro de grandes conjuntos de datos, e incluso se pueden crear encadenamientos, como ya se ha visto en párrafos anteriores, para encontrar resultados dentro de los resultados.

Ejemplo de una regex en la administración del servidor web

También pueden ser muy útiles para administradores de servidores web, pues facilitan el enrutamiento y la búsqueda de información. Los Log Files o archivos de registro siguen patrones propios, por lo que las regex pueden ayudar a encontrar mensajes específicos en archivos que pueden ser muy grandes, como los registros de acceso.

Las Regex también son utilizadas por el software del lado del servidor, como Apache, que usa archivos .htaccess para las reglas y condiciones de reescritura, muy útiles para dictar cómo un servidor debe responder a las solicitudes. Así, se pueden usar en archivos .htaccess para interpretar las solicitudes de acceso URL entrantes y redirigirlas o rechazarlas según sea necesario.

Una línea típica en un archivo .htaccess que usa expresiones regulares para ayudar en el enrutamiento de solicitudes tendría este aspecto:

RewriteRule ^index\.php$ - [L]

Esta línea las emplea para hacer coincidir cualquier solicitud del servidor para una URL que contenga index.php, independientemente de lo que tenga escrito después. Sin mod_rewrite (redirigir URLs), una URL típica podría verse como: www.ejemplo.com/index.php?p=123, pero con regex y mod_rewrite, en su lugar, a la misma página se puede acceder utilizando una similar a la siguiente: www.ejemplo.com/mi-posteo-de-blog

¿Por qué es importante para el SEO?

Las direcciones URL que incluyen las palabras clave principales de una página son muy beneficiosas para el SEO, ya que buscadores como el de Google tienen en consideración estas keywords a la hora de posicionar las páginas. Igualmente, también facilita a las y los visitantes regulares comprender qué tipo de contenido pueden esperar al acceder a una página.

Regex se usa en archivos .htaccess para lograr este resultado. Todos los CMS (gestores de contenido) populares, como WordPress, utilizan este enfoque, lo que permite a las y los webmasters crear y editar slugs de URL personalizados sin tener que editar ningún archivo. Además, cuando buscamos en un e-commerce también se pueden añadir los parámetros de una consulta en la URL, generando una dirección tal como: www.ejemplo.com/results.php?category =461&color=verde&tamaño=grande

Por otra parte, .htaccess usa las expresiones regulares para identificar los componentes individuales de una cadena de URL, como color=verde y category=461, y los reemplaza por otra mucho mejor tanto para las y los usuarios como también para los buscadores: www.ejemplo.com/search-results/juguetes/verde/grande. En apariencia, todo funcionará del mismo modo, pero esta última URL es mucho más amigable para el SEO, puesto que tanto el contenido de la página como su URL se ven más claros.

Ampliar conocimientos

Sobre las autoras y autores:
Seobility S
El equipo de Seobility Wiki está formado por expertas y expertos SEO, profesionales del marketing digital y especialistas en negocios con experiencia en SEO, marketing online y desarrollo web. Todos nuestros artículos pasan por un proceso editorial de varios niveles para proporcionarte la mejor calidad posible e información relevante y de utilidad. Conoce a la gente que hay detrás de la Wiki de Seobility.

Contenidos relacionados