OVH Cloud OVH Cloud

Extraire des infos d'une variable

4 réponses
Avatar
SpeLight
Bonjour,

Je dispose d'une variable $champ[26] qui contient le texte suiviant :
"IP à tester <192.168.1.1>". Je cherche à extraire l'ip cachée
dans ce champ mais j'ai trouvé aucune reg exp qui marche bien ...
Pouvez-vous m'aider ?

@++
SpeLight
--
Chaos reigns within.
Reflect, repent, and reboot.
Order shall return.

4 réponses

Avatar
Stéphane Müller
"SpeLight" a écrit dans le message de news:
44202b0b$0$19053$

Je dispose d'une variable $champ[26] qui contient le texte suiviant :
"IP à tester <192.168.1.1>". Je cherche à extraire l'ip cachée dans
ce champ mais j'ai trouvé aucune reg exp qui marche bien ...


Tu peux écrire qqchose dans ce style:

$Str = 'IP à tester <192.168.1.1>';
($Ip) = $Str =~ /^IP à tester
<(d{1,3}.d{1,3}.d{1,3}.d{1,3})>$/;
print $Ip;

Avatar
Paul Gaborit
À (at) Tue, 21 Mar 2006 17:46:42 +0100,
"Stéphane Müller" écrivait (wrote):
"SpeLight" a écrit dans le message de news:
44202b0b$0$19053$

Je dispose d'une variable $champ[26] qui contient le texte suiviant :
"IP à tester <192.168.1.1>". Je cherche à extraire l'ip cachée dans
ce champ mais j'ai trouvé aucune reg exp qui marche bien ...


Tu peux écrire qqchose dans ce style:

$Str = 'IP à tester <192.168.1.1>';
($Ip) = $Str =~ /^IP à tester
<(d{1,3}.d{1,3}.d{1,3}.d{1,3})>$/;
print $Ip;


Pourquoi faire compliqué alors que c'est si simple : l'adresse IP
cachée est 192.168.1.1 ! ;-)

En plus simple, on peut aussi faire :

if($champ[26] =~ m/([0-9.]{7,15})/) {
print "L'adresse IP caché est $1n";
}

Sinon on peut faire plus tordue :

if ($champ[26] =~ m/((?:[12]?d{1,2}.){3}(?:[12]?d{1,2}))/}
print "L'adresse IP caché est $1n";
}

Ça ne reconnait plus 999.888.111.000, mais ça laisse encore passer des
trucs du genre 299.299.299.299 !

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>


Avatar
jl_morel
Dans l'article <44202b0b$0$19053$, a
dit...

Bonjour,

Je dispose d'une variable $champ[26] qui contient le texte suiviant :
"IP à tester &lt;192.168.1.1&gt;". Je cherche à extraire l'ip cachée
dans ce champ mais j'ai trouvé aucune reg exp qui marche bien ...
Pouvez-vous m'aider ?



Les feignants (les programmeurs Perl le sont :-) peuvent utiliser le module
Regexp::Common

http://perl.enstimac.fr/perl5.8.5/site_perl/5.8.5/Regexp/Common/net.html


#!/usr/bin/perl -w
use strict;
use Regexp::Common qw /net/;

my $s = "IP à tester &lt;192.168.1.1&gt;";

$s =~ /$RE{net}{IPv4}{-keep}/;

print $1;

__END__

--
J-L.M.
http://www.bribes.org/perl

Avatar
SpeLight
À (at) Tue, 21 Mar 2006 17:46:42 +0100,
"Stéphane Müller" écrivait (wrote):
"SpeLight" a écrit dans le message de news:
44202b0b$0$19053$

Je dispose d'une variable $champ[26] qui contient le texte suiviant :
"IP à tester &lt;192.168.1.1&gt;". Je cherche à extraire l'ip cachée dans
ce champ mais j'ai trouvé aucune reg exp qui marche bien ...
Tu peux écrire qqchose dans ce style:


$Str = 'IP à tester &lt;192.168.1.1&gt;';
($Ip) = $Str =~ /^IP à tester
&lt;(d{1,3}.d{1,3}.d{1,3}.d{1,3})&gt;$/;
print $Ip;


Pourquoi faire compliqué alors que c'est si simple : l'adresse IP
cachée est 192.168.1.1 ! ;-)

En plus simple, on peut aussi faire :

if($champ[26] =~ m/([0-9.]{7,15})/) {
print "L'adresse IP caché est $1n";
}

Sinon on peut faire plus tordue :

if ($champ[26] =~ m/((?:[12]?d{1,2}.){3}(?:[12]?d{1,2}))/}
print "L'adresse IP caché est $1n";
}

Ça ne reconnait plus 999.888.111.000, mais ça laisse encore passer des
trucs du genre 299.299.299.299 !



Merci ça marche impec !!!


@++
SpeLight
--
A crash reduces
Your expensive computer
To a simple stone.