• Publicidad

Compactar una expresión regular

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Compactar una expresión regular

Notapor Dshellnoi_Unix » 2013-04-12 14:59 @665

Quiero extraer exactamente la ruta absoluta junto con el directorio wp-content con una posible profundidad de 12 directorios... ¿Habría alguna manera de compactar esta expresión que me funciona pero es un poco larga?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open(WP, "/tmp/salida.txt");
  2.  
  3. while (my $p = <WP>) {
  4.  
  5.     while ($p =~ m#((/\w*|/\w*/\w*|/\w*/\w*/\w*|/\w*/\w*/\w*/\w*|/\w*/\w*/\w*/\w*/\w*|/\w*/\w*/\w*/\w*/\w*/\w*)?/wp-content/)#g) {
  6.         my $dir = $1;
  7.    
  8.         $directorios{ $dir } = 1;
  9.     }
  10. }
  11.  
  12. close(WP);
  13.  
  14. my @directorios = keys %directorios;
  15.  
  16. for  my $dir (@directorios) {
  17.     print  $dir ."\n";
  18. }
  19.  
  20.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Gracias de antemano =^.^=
Avatar de Usuario
Dshellnoi_Unix
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2013-02-24 15:43 @696
Ubicación: Las Palmas de Gran Canaria

Publicidad

Re: Compactar una expresión regular

Notapor explorer » 2013-04-12 16:12 @717

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     while ($p =~ m#((?:/\w+){0,12}/wp-content/?)#g) {
  2.         $directorios{ $1 } = 1;
  3.     }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Compactar una expresión regular

Notapor Dshellnoi_Unix » 2013-04-12 16:42 @738

Gracias, explorer. Perdona mi ignorancia, pero, ¿qué hacen los dos puntos, exactamente? Es que no están en los tutoriales de expresiones regulares que están en la página ni en los que tengo aquí. Lo haces tan bonito que parece fácil. ¡ja,ja,ja,ja!
Avatar de Usuario
Dshellnoi_Unix
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2013-02-24 15:43 @696
Ubicación: Las Palmas de Gran Canaria

Re: Compactar una expresión regular

Notapor explorer » 2013-04-12 16:57 @748

El (?:...) es uno de los patrones extendidos de Perl (busca por (?:patrón)).

Lo que hace es decir que esos paréntesis no son de captura, sino solo de agrupación. No capturan la coincidencia con el patrón y la guardan en $1, $2, $3, etc., sino que los necesitamos para englobar la expresión junto con el cuantificador con las llaves que le sigue.

Tampoco pasaría nada si se quitara '?:' y fueran unos paréntesis normales (al menos, en esta expresión regular; en otra, sí que serían necesarios).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Compactar una expresión regular

Notapor Dshellnoi_Unix » 2013-04-13 02:46 @157

Muchas gracias por tu paciencia.
Que tengas un buen finde :)
Avatar de Usuario
Dshellnoi_Unix
Perlero nuevo
Perlero nuevo
 
Mensajes: 48
Registrado: 2013-02-24 15:43 @696
Ubicación: Las Palmas de Gran Canaria


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado