expression régulière avec perl

expression régulière avec perl - Perl - Programmation

Marsh Posté le 01-06-2017 à 16:03:47    

Bonjour,
 
Je débute avec les expressions régulières:  
 
pour une phrase contenant des lettres arabes, français, des chiffres et des autres caractères comme par exemple : / //  
je veux garder dans cette phrase que les lettres arabes, latins les chiffres et les espaces , par exemple pour la phrase : صحيح البخاري//كتاب بدء الوحي 2 - :titre  
je veux : صحيح البخاري كتاب بدء الوحي 2 titre  
 
voici le regex que j'ai fait:  
 

Code :
  1. $line =~ s/[^\p{Arabic}\p{Latin}\d]/ /g;

 
 
pourquoi cette expression est fausse ?  
 
merci d'avance

Reply

Marsh Posté le 01-06-2017 à 16:03:47   

Reply

Marsh Posté le 02-06-2017 à 11:22:03    

Chez moi, ceci:

Code :
  1. #!/usr/bin/env perl
  2. use strict;
  3. use warnings;
  4. use autodie;
  5.  
  6. # Pour virer la BOM utf8 (inutile mais hélas mise par MS-Windows, et qui s'incruste au premier mot du corpus).
  7. use File::BOM qw(open_bom);
  8.  
  9. open_bom my $fh, 'testperl.txt';
  10. open my $gh, '>:utf8', 'testresult.txt';
  11. while (<$fh> ) {
  12.     s/[^\p{Arabic}\p{Latin}\d]/ /g;
  13.     s/\s+/ /g;
  14.     print $gh $_;
  15. }
  16. close $gh;
  17. close $fh;


avec ceci en entrée:
صحيح البخاري//كتاب بدء الوحي 2 - :titre
donne en résultat:
صحيح البخاري كتاب بدء الوحي 2 titre
La regexp est donc bonne.
Donc le problème vient sans doute de ton jeu de caractères en entrée, qui n'est ni de l'utf8, ni de l'ascii, et il va donc te falloir transcoder avant pour pouvoir appliquer ta regexp.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-06-2017 à 01:51:42    

Merci gilou :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed