PERL de nouveau débutant ... recherche de mot
                    
        
     
             
                    sbouli
    
        
    
                    Messages postés
            
                
     
             
            208
        
            
                                    Statut
            Membre
                    
                -
                                     
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
        lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
        Bonjour, 
J'ai un peu honte, mais j'ai laché PERL depuis trop longtemps ....
imaginons la phrase :
et dans le code je souhaite faire un :
si $_ contient les mots maurice et temps superbe alors
ne sachant pas toujours ce qu'il peut y avoir entre maurice et temps superbe ...
je pense que ça tourne autour de :
mais ça me parait ... un peu légé ...
Merci pour votre aide !
                
            
                
    
    
    
        J'ai un peu honte, mais j'ai laché PERL depuis trop longtemps ....
imaginons la phrase :
Feb 23 10:55:22 bonjour maurice ne trouves-tu pas le temps superbe aujourd'hui ?
et dans le code je souhaite faire un :
si $_ contient les mots maurice et temps superbe alors
ne sachant pas toujours ce qu'il peut y avoir entre maurice et temps superbe ...
je pense que ça tourne autour de :
if ($_ =~ /*maurice*temps superbe*/)
mais ça me parait ... un peu légé ...
Merci pour votre aide !
        A voir également:         
- PERL de nouveau débutant ... recherche de mot
- Trousseau mot de passe iphone - Guide
- Mot de passe - Guide
- Mot de passe administrateur - Guide
- Mot de passe bios perdu - Guide
- Voir mot de passe wifi android - Guide
3 réponses
                        
                    Salut,
if ($_ =~ /*maurice*temps superbe*/)
C'est plutôt faux pas léger ;-)
Ton expression régulière n'est pas correcte vu que tu utilises le quantificateur pour rien au début de la regex.
Voici le message d'erreur du Perl
Si on va le supprimé on obtiendra rien comme résultat
Pourquoi?
On va traduire ta regex et tu comprendras.
/maurice*temps superbe*/
m suivi de a suivi de u suivi de r suivi de i suivi de c suivi de suivi de e (zéro fois, une fois ou n'importe combien de fois) suivi de t suivi de e ............................suivi de b suivi de e (zéro fois, une fois ou n'importe combien de fois)
Ca fonctionne comme ça avec la condition que maurice est toujours avant temps superbe sinon il faudra utiliser l'opérateur && comme t'a montré jisisv dans son exemple.
                
                
    
                if ($_ =~ /*maurice*temps superbe*/)
C'est plutôt faux pas léger ;-)
Ton expression régulière n'est pas correcte vu que tu utilises le quantificateur pour rien au début de la regex.
Voici le message d'erreur du Perl
~$ echo maurice et temps superbe| perl -ne 'print if /*maurice*temps superbe*/' Quantifier follows nothing in regex; marked by <-- HERE in m/* <-- HERE maurice*temps superbe*/ at -e line 1.
Si on va le supprimé on obtiendra rien comme résultat
~$ echo maurice et temps superbe| perl -ne 'print if /maurice*temps superbe*/' ~$
Pourquoi?
On va traduire ta regex et tu comprendras.
/maurice*temps superbe*/
m suivi de a suivi de u suivi de r suivi de i suivi de c suivi de suivi de e (zéro fois, une fois ou n'importe combien de fois) suivi de t suivi de e ............................suivi de b suivi de e (zéro fois, une fois ou n'importe combien de fois)
Ca fonctionne comme ça avec la condition que maurice est toujours avant temps superbe sinon il faudra utiliser l'opérateur && comme t'a montré jisisv dans son exemple.
~$ echo maurice et temps superbe| perl -ne 'print if /maurice.*temps superbe/' maurice et temps superbe
                        
                    Cela fait longtemps que je n'ai plus fait du PERL.
Inspire-toi peut-être de ceci:
    
                Inspire-toi peut-être de ceci:
johand@osiris:~/src/ccm/perl$ cat *dat
maurice
temps superbe maurice jfdhdvhvbh
maurice hhh temps superbe
temps superbe djn jdn j fj  Maurice
johand@osiris:~/src/ccm/perl$ ./maurice.pl < maurice.dat 
temps superbe maurice
maurice hhh temps
temps superbe djn
johand@osiris:~/src/ccm/perl$ cat maurice.pl
#! /usr/bin/perl -w
while(<>) {
    $v = "temps superbe";
    if(  /maurice/i && /$v/i ) {
	@fields = split(/ /);
	print(join( ' ', $fields[0], $fields[1], $fields[2]) . "\n");
    }
}
Crée une fonction !
                
                