¡Foto!

¡Envia tu foto al Fotomaton!

Introducción a las expresiones regulares

2 comentarios · 1.573 lecturas · geek

Las expresiones regulares son un sistema cómodo, rápido y potente (una vez se domina) de realizar un filtrado sobre un determinado caso, y obtener un grupo más reducido y específico, excluyendo los resultados que no coincidan con el patrón dado.

Siendo más técnicos, con ayuda de un modelo matemático, llamado DFA (Autómata Finito Determinista) se puede observar como se aceptarían las cadenas que casaran con la expresión regular equivalente abc*.

dfa autómata finito determinista afd expresion regular regexp

Partiendo del estado de arranque q0, podemos transitar al estado q1 con el símbolo a y transitar al estado q2 con el símbolo b para llegar a un estado de aceptación (doble trazo) e incluso seguir transitando indefinidamente con el simbolo c, lo que demostraría que las cadena ab, abc, abcc... entrarían dentro de las cadenas que acepta.

Ejemplo práctico


Para comprender esta definición, pondremos un ejemplo.

Tenemos varias carpetas, con miles y miles de imagenes con distintos nombres y formatos (JPG, PNG, GIF...) y nos interesa separar todas las fotografías en las que aparece Ramón (ramon_borracho.jpg, ramon45.jpg, ramon_de_viaje.bmp...).

La primera opción que se nos ocurre es hacerlo de forma manual, cosa que nos consumiría demasiado tiempo si se trata de más de, por ejemplo, 5.000 fotografías.

La siguiente opción es utilizar los comodines (wildcards): Utilizando los comodines * (cualquier conjunto de carácteres) y ? (cualquier carácter, sólo uno), podemos obtener más precisión de una forma sencilla: ramon*.jpg, ramon*.???, *ramon*.*, ...). En estos casos, la potencia de los comodines suele ser suficiente.

regexp file ficheros imagenes fotografias select

Sin embargo, el método anterior es limitado, puesto que, si quisieramos detectar fotografías con nombres como ramón.jpg, r4m0n.jpg, raaamoncito.jpeg pero no incluir román.jpg, romén.jpg y sólo incluir imagenes con formato jpg no habría forma de discriminar entre ambas opciones, salvo utilizando una expresión regular: ^.*ra|4m(o|0|ó)n.*\.jpg$.

Expresiones regulares (metacarácteres)


Ahora la pregunta es... ¿y qué significa ese conjunto de letras sin sentido? Tiene una sencilla explicación:

  • El carácter ^ indica el comienzo de la cadena. Dentro de una clase indica inexistencia.
  • El carácter . es un comodín (cualquier carácter, como ? en wildcards).
  • El carácter * se refiere al carácter (o agrupación) anterior, puede aparecer 0 ó más veces.
  • El carácter + es idéntico al anterior, pero apareciendo 1 ó más veces. Es equivalente a xx*, donde x es el carácter a repetir.
  • Los corchetes [] agrupan carácteres en clases, lo que indica posibilidad.
  • El carácter | indica una alternativa, o lo que está a su izquierda, o lo que está a su derecha.
  • Los paréntesis () realizan una agrupación, generalmente para realizar subexpresiones más complejas, utilizar un carácter especial sobre toda la agrupación o realizar almacenamiento de información para procesado posterior.
  • El carácter \ se utiliza para escapar, o lo que es lo mismo, quitarle el significado especial a un carácter, \* significa asterisco. Además, también tiene muchas opciones para detectar la naturaleza de un conjunto de carácteres (alfabéticos, alfanuméricos, dígitos, espacios en blanco, ...).
  • El carácter ? que indica opcionalidad, puede o no aparecer el carácter predecesor.
  • Las llaves {num} indican que el carácter predecesor aparece num veces.
  • El carácter $ indica el final de la cadena.

Utilidad y aplicación


Como hemos visto anteriormente, la potencia de las expresiones regulares es increíblemente amplia. Suele ser especialmente útil para los programadores (PHP, Perl, Java, .NET...), que pueden desarrollar y reconocer patrones complejos de una forma sencilla.

Pero eso no queda ahí, si no eres programador también puedes hacer uso de las expresiones regulares para múltitud de tareas. Muchas aplicaciones utilizan expresiones regulares y seguro que no tenías ni idea:

  • Bloc de notas: Aunque no el base de Windows, sino notepad2. Especialmente útil para reemplazar cadenas en textos en los que están repetidos varias veces (ficheros HTML, de texto, ...).
  • Comandos UNIX: Comandos de administrador de sistemas como grep, egrep, awk, sed y tantos otros. Recuerda que si usas Windows, puedes utilizar muchos de estos comandos con UNIXUtils.
  • Renombrado masivo: Como en el ejemplo que utilicé, existen multitud de programas para renombrar ficheros utilizando expresiones regulares como RegEx Renamer.
  • Emule: El mismísimo emule permite realizar busquedas con un grupo reducido de expresiones regulares, por ejemplo si queremos buscar canciones que empiecen por Spectrum (para buscar de este grupo musical), podemos escribir ^Spectrum y especificar ficheros de audio, evitando asi canciones que tengan el nombre Spectrum en su título. Además en Preferencias / Opciones adicionales / Mostrar más controles (Controles de modo avanzado) puedes activar las expresiones regulares para filtrar categorías en las pestañas de tráfico.
  • Renombrado de MP3: Con Quick File Rename, se mezcla la potencia de las expresiones regulares a la capacidad de utilizar los tag ID3 para renombrar tus archivos.

2 comentarios · Escrito el 16-Feb-2008 · Ver menciones
Recomendar por correo · Meneame · Añadir a del.icio.us

2 Comentarios


#1 Publicado hace 3 meses
Alejandro Lector

Navegando con Opera
Bajo Windows XP

Buena introducción. Espero que sigas con artículos sobre este tema.

#2 Publicado hace 2 meses
titeredtrapo Lector

Navegando con Mozilla Firefox
Bajo Ubuntu Linux

Hola! muy buena informacion...

pero tengo una duda: si quiero aplicar esto a torrentss para descargar solo DVDRips de aXXo, FXG, KLAXXON y DiAMOND podría aplicar un filtro como este?

.*DVDRip.*(aXXo|FXG|KLAXXON|DiAMOND)*

espero tu respuesta! gracias...

Deja tu comentario


en Internet.




Consejos


  • Los comentarios fuera del tema del artículo (OFF-TOPIC) serán eliminados.
  • Escribir completamente en MAYUSCULAS en Internet equivale a GRITAR y está mal visto.
  • No utilices lenguaje SMS, en Emezeta no te cobramos por letras escritas.
  • No hagas publicidad de tu página o dejes enlaces en el comentario para aumentar el PR o la popularidad en buscadores. En Emezeta se aplica el tag nofollow, que hace que Google ignore esos enlaces.
  • No insultes. Al escribir un comentario tus datos quedan almacenados y serás el único responsable de tus palabras. Se permite la libertad de expresión y de opinión, pero no los comentarios ofensivos.
  • Puedes insertar algunas etiquetas HTML en los comentarios: em, a href, b, i, em, code, acronym y strong.
  • Es posible añadir una foto junto a tus comentarios, para ello sólo tienes que personalizarla en Gravatar. [?]

Envía tu foto


Fotomatón Emezeta

Envia tu fotografía al fotomatón de Emezeta. Puedes enviar varias y saldrás en la portada de Emezeta.


Artículo de http://www.emezeta.com/

10 consultas efectuadas / Página generada en 0.073 segundos

Programado íntegramente por José Román (Manz) en XHTML y CSS estándar.

Sindicado bajo Feed RSS. Contenido bajo licencia Creative Commons

Estadísticas de visitas · Términos y condiciones · Contacto · Publicidad · Preguntas frecuentes (FAQ)