[regexp] Le caractere ou

Résolu/Fermé
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 - 9 déc. 2009 à 12:38
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 - 9 déc. 2009 à 13:41
Bonjour,

Voila en fait je souhaiterai mettre un "ou" dans ma regexp : soit un espace soit pas d'espace (donc rien)

La ligne a traiter peut avoir deux formes : //billybob('ok',toto) ou // billybob('ok',toto)

la regexp :
$bob = "\/\/ billybob\('ok',toto\)";

if ($bob =~ /\/\/([^.]| )billybob\((.*),.*\)/){
$2 =~ /'(.*)'/;
print "\n ok2 $1";
}


Donc la 2 problèmes :
-je préférerai ne pas avoir à utiliser des parenthèses pour mon "|" afin d'éviter l'utilisation du $2.
-ca fonctionne pour // billybob('ok',toto) mais pas pour le "sans espace", a mon avis "([^.]| )" n'est pas au point.

Un coup de main svp ? ^^
A voir également:

2 réponses

fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
9 déc. 2009 à 12:46
Bon j'ai résolu mon probleme de l'espace et du rien :

$bob =~ /\/\/(| )billybob\((.*),.*\)/


On voit bien que le "ou" est (| ), rien ou un espace, le problème c est que ma regexp comprend ca comme le contenu du $1.... et j'en veux pas en fait..... Existe t il une autre manière d'exprimer le "ou" que par des parentheses ?
0
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
9 déc. 2009 à 13:41
ok c est bon j'ai trouvé pour une parenthèse non capturante il faut mettre (?:| ).

Bonne journée
0