Aux modérateurs ... LISEZ LA QUESTION avant de marquer en double.
J'utilise une expression régulière en utilisant des scalaires ici. Première fois cependant. Je vais mettre le code. Cela devrait aller de soi
#!/usr/bin/perl
my $regex = "PM*C";
my $var = "PM_MY_CALC";
if($var =~ m/$regex/){
print "match n";
}
else{
print "no matchn";
}
La sortie que je reçois est "pas de correspondance" ..
est-ce que je manque quelque chose d'évident ici? Évidemment, cela ne correspond à aucune autre chose .. donc juste fait que la regex et la variable à vérifier soient identiques .. toujours pas de correspondance.
J'ai essayé de faire ça aussi ..
if($var =~ $regex ){
basé sur une recherche de perlMonks.
et si vous pensez toujours que c'est un doublon et que vous voulez aller à cette question ici ...
Détecte la valeur de chaîne exacte de scalaire dans la correspondance regex
économisez votre temps et votre ego .. Ce n'est pas celui-là, et cela ne répond pas à ma requête .. et épargnez-vous s'il vous plaît un peu de temps pour cette question jusqu'à quelqu'un qui veut vraiment aider à répondre à cette question ..
Réponses:
2 pour la réponse № 1*
est un quantificateur, pas un caractère générique dans les expressions rationnelles Perl. PM*C
comme un regex signifie P
, suivi de zéro ou plus M
s, suivi de C
. Par exemple, les chaînes suivantes correspondent:
PC
PMC
PMMC
PMMMC
xxxPCxxx
Si vous devez faire correspondre "n'importe quoi", utilisez .*
.