OVH Cloud OVH Cloud

Une petite expression rationnelle

2 réponses
Avatar
Denis -esp2008-
Bonjour,

J'ai un programme perl qui sert à boire, et il reçoit des commandes de
ce type :

!barman une boisson
!barman une boisson pour quelqu'un
!barman 3 boissons
!barman tournée de boisson pour raison
!barman tournée pour raison
!barman tournée de boisson
!autre truc

Je voudrais récupérer la commande ($_) dans un motif comme ceci:

($destinataire, $requete, $boisson, $destinataire_ou_raison) =
/^!([a-z]+) (\w+)(?: de (.*))?(?: pour (.*))?$/

Mon problème est que je voudrais que $requete ne contienne pas "\bde\b"
et $boisson ne contienne pas "\bpour\b", mais je ne sais pas comment faire
(ça doit être tout simple, mais je ne sais réellement pas faire).

Merci à ceux qui savent,

--
Denis

2 réponses

Avatar
Denis -esp2008-
Bonjour,

D'une part j'avais posté la mauvaise version de mon
expression, et d'autre part je ne sais pas comment j'ai pu oublier qu'on
pouvait changer l'avidité des expressions rationnelles avec des points
d'interrogation bien placés.

Ne me reste plus qu'à faire les 10 lignes de commentaire pour expliquer
une expression où les points d'interrogations ont 3 significations
différentes!

Bonne journée,

--
Denis
Avatar
Johnny \Gandalf\ Brasseur
Salut Denis,
sinon ca peut se faire en deux parties ,
une premiere ou tu suprimes les mots indésirables
s/(pour|de|à|etc...)//g; (ajouter les b utiles)
puis ensuite en récupérant les items qui te sont utiles..
si ca peut aider...
$A++

Denis -esp2008- wrote:

Bonjour,

D'une part j'avais posté la mauvaise version de mon
expression, et d'autre part je ne sais pas comment j'ai pu oublier qu'on
pouvait changer l'avidité des expressions rationnelles avec des points
d'interrogation bien placés.

Ne me reste plus qu'à faire les 10 lignes de commentaire pour expliquer
une expression où les points d'interrogations ont 3 significations
différentes!

Bonne journée,



--
Johnny "gandalf" Brasseur (http://www.perlone.org)