• Publicidad

Expresiones regulares para escapar caracteres especiales

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Expresiones regulares para escapar caracteres especiales

Notapor oihantze » 2009-07-12 17:19 @763

Hola. El caso es que tengo un documento que se llama Storage Alternatives for Mobile Computers (1994) y hay que conseguir convertirlo a Storage\ Alternatives\ for\ Mobile\ Computers\ \(1994\) pues si no, no puedo acceder a el desde el programa. ¿cómo puedo hacerlo? Pues he probado:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$nombre="Storage Alternatives for Mobile Computers (1994) ";
$nombre=~s/ /\ /g;
$nombre=~s/)/\)/;
$nombre=~s/(/\)/;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


y no me funciona. ¿Alguien me podría ayudar? ¡¡¡Gracias!!!
oihantze
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2009-07-12 17:13 @759

Publicidad

Re: expresiones regulares

Notapor explorer » 2009-07-12 19:34 @857

Bienvenido a los foros de Perl en Español, oihantze.

Hay unos errores en las expresiones regulares, sí. El problema está en que '\', '(' y ')' son caracteres especiales, por lo que hay que escaparlos:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -l
use strict;
use warnings;
use diagnostics;

my $nombre = "Storage Alternatives for Mobile Computers (1994)";
$nombre =~ s/ /\\ /g;
$nombre =~ s/\)/\\)/;
$nombre =~ s/\(/\\)/;

print $nombre;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ahora bien, si el trabajo consiste solo en escapar los caracteres especiales que están dentro del $nombre, se pueden usar los operadores de escapado dentro de literales:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -l
use strict;
use warnings;
use diagnostics;

my $nombre = "Storage Alternatives for Mobile Computers (1994)";

$nombre = "\Q$nombre\E";

print $nombre;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


que es lo mismo que usar la función quotemeta():
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -l
use strict;
use warnings;
use diagnostics;

my $nombre = "Storage Alternatives for Mobile Computers (1994)";

print quotemeta($nombre);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Más información sobre '\Q' en perlop.
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: Expresiones regulares para escapar caracteres especiales

Notapor oihantze » 2009-07-13 10:45 @490

¡¡¡¡Muchas gracias!!!!
oihantze
Perlero nuevo
Perlero nuevo
 
Mensajes: 25
Registrado: 2009-07-12 17:13 @759


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 21 invitados

cron