[R] Extraire nombre d'une adresse IP

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
davzell
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 26 sept. 2013 14:15
Status : Hors ligne

[R] Extraire nombre d'une adresse IP

#1

Message par davzell »

bonjour,

j'aimerai lancer un programme sur le serveur qui me récupérera l'ip de ce serveur afin de m'en servir ensuite avec des commandes netsh.
Pour mes commandes j'ai besoin qu'il me garde les 3 premiers groupes de chiffres de mon ip.

Par exemple je récupère l'ip 192.168.1.1, il faut que je puisse extraire 192.168.1


en gros ne pas extraire tout ce qui est derrière le dernier "." sachant que ce dernier nombre peut faire entre 1 et 3 chiffres.

je voulais compter le nombre de chiffre a partir de la fin jusqu'au "." (avec StringLen) et ensuite l'extraire avec StringTrim, mais vu qu'on ne peut pas utiliser de délimiteur avec stingLen je suis coincé.

Je bloque aussi avec stringbetween vu qu'il y a plusieurs "." dans mon ip

Je pense donc qu'il faut utiliser stringregexp mais j'ai du mal a saisir comment faire avec les expressions régulière.

Est ce que c'est bien ca qu'il faut utiliser ou il y a plus simple ?

merci
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] extraire nombre d'une adresse ip

#2

Message par jchd »

Tu peux faire comme ça :

Code : Tout sélectionner

Local $ip = ["192.168.1.1", "192.168.17.43", "192.168.208.157"]
For $s In $ip
    ConsoleWrite($s & " --> " & StringRegExpReplace($s, "(\d+\.\d+\.\d+)\.\d+", "$1") & @LF)
Next
 
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] extraire nombre d'une adresse ip

#3

Message par jguinch »

Avant de partir directement dans les expressions régulières, tu peux t'en sortir facilement avec d'autres méthodes.

Par exemple,
- en récupérant la position du dernier point : StringInStr($ip, ".", 0, -1), puis en extrayant la chaîne avec StringLeft
- en éclatant la chaine en tableau, puis en reconstruisant une chaine à partir de ce tableau : StringSplit($ip, ".")

Avec expression régulière, c'est sûr ça fait moins de code, mais il faut quand même attaquer par des choses simples..
$extract = StringRegExpReplace($ip, "\.[\d]+$", "")

Edit : grillé par JC... D'ailleurs, une question pour JC : entre nos 2 "méthodes" y a t-il une méthode préférable à l'autre ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] extraire nombre d'une adresse ip

#4

Message par jchd »

En fait, il y a un léger avantage à préciser au maximum ce qu'on attend, histoire d'éviter de confondre π = 3.1415926 avec une IP.
Cela devrait nous pousser à rendre l'expression encore plus discriminante :

Code : Tout sélectionner

Local $ip = ["192.168.1.1", "192.168.17.43", "192.168.208.157"]
For $s In $ip
    ConsoleWrite($s & " --> " & StringRegExpReplace($s, "^(\d{1,3}\.\d{1,3}\.\d{1,3})\.\d{1,3}$", "$1") & @LF)
Next
 
Bien sûr, le contexte sera le meilleur indice pour choisir de durcir ou pas une expression.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
davzell
Niveau 5
Niveau 5
Messages : 105
Enregistré le : jeu. 26 sept. 2013 14:15
Status : Hors ligne

Re: [R] Extraire nombre d'une adresse IP

#5

Message par davzell »

merci a vous deux ca marche nikel
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Extraire nombre d'une adresse IP

#6

Message par jguinch »

N'oublie pas de passer ton sujet en [R] si c'est OK
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre