Quelques exemples ? [regexp]

Mylène -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,

j'ai par exemple un fichier contenant ces phrases :
toto est dans le parc
le printemps
le bonheur est dans le pre


Pourriez-vous s'il vous plait m'écrire des exemples d'expressions régulières (format PERL) qui donneront des résultats en ayant ce fichier

Merci

1 réponse

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Voilà quelques exemples banales.
    #! /usr/bin/perl
    #
    use warnings;use strict;
    
      undef $/;
      my $reg1=<DATA>;
    
    # Exemple 1 : cherche le nombre de 'le' dans le fichier
    #
      my @le = $reg1 =~ /le/g;
      print "il y a ${\(@le + 0)} 'le' dans le fichier\n";
    
    # Exemple 2 : trouver combien des 'le' sont en début de ligne
    #
      my @le2 = $reg1 =~ /^[a-z]{2}\b/mg;
      print "il y a ${ \(@le2 +0) } 'le' en début de ligne\n";
    
    # Exemple 3 : trouver combien des le sont après "dans " sur la même ligne
    #
     my @le3 = $reg1 =~ /(?<=dans\s)\w{2}/g;
     print "après 'dans ' il y ${ \(@le3 + 0) } 'le'\n";
    
    # Exemple 4 : combien de mots contient notre fichier
    #
     my @mot = $reg1 =~ /\b\w+\b/g;
     print "il y a ${ \(@mot + 0) } mots dans le fichier\n";
    
    # Exemple 5 : changer la casse des voyelles
    #
      (my $voyelles = $reg1) =~ s/([aeiou])/\U$1/g;
      print "$voyelles";
    
    # Exemple 6 : transformer les caractères en code ASCII 
    #
      (my $ascii = $reg1) =~ s/(.)/ord($1)/eg;
      print "$ascii";
    
    # Exemple 7 : trouver combien des 'pr' existe mais avec la condition
    #             qu'il fait partie de mots printemps
    #
      my @pr = $reg1 =~ /pr(?=intemps)/g;
      print "il y a ${ \(@pr + 0) } 'pr' qui fait/font partie de printemps\n";
    
    __END__
    toto est dans le parc
    le printemps
    le bonheur est dans le pre
    
    lami20j
    1