• Publicidad

Problemas expresiones regular \b con tildes y ñ

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Problemas expresiones regular \b con tildes y ñ

Notapor Vertik » 2012-01-19 10:27 @477

¡Hola a todos!

¡Tengo una dudilla! Nuestro gran idioma tiene caracteres como á,ó,ñ,...

Lo que me sucede con ellos es que al hacer un split() con \b a la linea "esto es una prueba con el español", es decir:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $linea="esto es una prueba con el español";
  2.   @tmp=split('\b',$linea);
  3. print "@tmp";
  4.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

El resultado es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
esto   es   una   prueba   con   el   espa ñ ol
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Separando, como veis, la palabra español de la manera espa/ñ/ol.

¿Sabéis cómo puede evitar esto, y que la ñ (como las tildes) formen parte de las palabras?

¡Mil gracias!
Vertik
Perlero nuevo
Perlero nuevo
 
Mensajes: 41
Registrado: 2011-04-20 06:32 @314

Publicidad

Re: Problemas expresiones regular \b con tildes y ñ

Notapor explorer » 2012-01-19 11:23 @516

Pues depende de:
  • La codificación que estás usando para escribir tu programa. Mejor dicho: de la codificación en la que están esos caracteres literales (si no hay caracteres literales, vendrán de algún fichero o de alguna entrada).
  • La versión de Perl que estés usando.

Por ejemplo, yo uso para escribir mis programas la codificación utf-8, así que la salida de este programa es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use Modern::Perl;           # Programamos en Perl Moderno
  3. use utf8::all;              # Activa todo el soporte para utf8
  4.  
  5. my $linea = "esto es una prueba con el español";
  6. my @tmp   = split /\b/, $linea;
  7. $"        = '][';
  8.  
  9. say "[@tmp]";
  10. __END__
  11. [esto][ ][es][ ][una][ ][prueba][ ][con][ ][el][ ][español]
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


Volver a Avanzado

¿Quién está conectado?

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