[PERL] expression réguliére RESOLU

expression réguliére RESOLU [PERL] - Perl - Programmation

Marsh Posté le 17-10-2018 à 15:38:59    

bonjour,
Une variable me retourne ceci
 1.3.6.1.2.1.196.1.2.1.1.3.4
ou
 1.3.6.1.2.1.196.1.2.1.1.3.15
ou
 1.3.6.1.2.1.196.1.2.1.1.3.13
Comment faire en perle pour recupérer apres le dernier point
par exemple
 13 = 1.3.6.1.2.1.196.1.2.1.1.3.13
 
C'est pour récupérer une sequence d'une OID sur un equipement qui fait du snmp.
 
merci


Message édité par skoizer le 17-10-2018 à 16:35:42

---------------
je veux tout, tout de suite, et gratuitement ! miladiou !
Reply

Marsh Posté le 17-10-2018 à 15:38:59   

Reply

Marsh Posté le 17-10-2018 à 15:53:39    

Bonjour,
 
Je propose :

Code :
  1. (?:\d+\.)+(\d+)


 
Mais je suggère surtout de ne pas utiliser une expression régulière, dans ton cas tu peux travailler en récupérant dans une string tous les caractères à partir du 27ème.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 17-10-2018 à 16:00:06    

j'ai trouvé une autre methode que le regex
c'est pas du regex mais cela fait le boulot
 
my $str=1.3.6.1.2.1.196.1.2.1.1.3.13;
$i=rindex($str,"." );
$a=substr($str,$i+1);
 
cela me renvoi $a = 13


---------------
je veux tout, tout de suite, et gratuitement ! miladiou !
Reply

Marsh Posté le 17-10-2018 à 16:00:50    

MaybeEijOrNot a écrit :

Bonjour,
 
Je propose :

Code :
  1. (?:\d+\.)+(\d+)


 
Mais je suggère surtout de ne pas utiliser une expression régulière, dans ton cas tu peux travailler en récupérant dans une string tous les caractères à partir du 27ème.


 
merci beaucoup MaybeEijOrNot
 
c'est pour faire remonter si les bornes wifi son up ou down sur un cotnroleur HPE.


Message édité par skoizer le 17-10-2018 à 16:01:59

---------------
je veux tout, tout de suite, et gratuitement ! miladiou !
Reply

Marsh Posté le 17-10-2018 à 17:04:26    

skoizer a écrit :

j'ai trouvé une autre methode que le regex
c'est pas du regex mais cela fait le boulot
 
my $str=1.3.6.1.2.1.196.1.2.1.1.3.13;
$i=rindex($str,"." );
$a=substr($str,$i+1);
 
cela me renvoi $a = 13


 
Comme je disais, mieux vaut travailler avec les méthodes classiques associées aux strings. Ta solution est bonne et peut être généralisée et maintenue facilement. Travailler sur la longueur de la chaine est la solution la moins coûteuse si tu es certain que ça n'évolue pas dans le temps, c'est donc en contrepartie moins maintenable.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 17-10-2018 à 21:50:09    

my $str="1.3.6.1.2.1.196.1.2.1.1.3.13";  
(my $a = $str) =~ s/.*\.//;
 
La seconde ligne s'expanse de manière plus lisible ainsi:
my $a = $str;
$a =~ s/.*\.//;
 
ou sinon  
my $a = substr($str, 1+rindex($str, '.'));
 
A+,


Message édité par gilou le 17-10-2018 à 22:05:47

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed