Page 1 sur 1

[R] Extraire nombre d'une adresse IP

Posté : ven. 11 avr. 2014 11:19
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

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

Posté : ven. 11 avr. 2014 11:33
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
 

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

Posté : ven. 11 avr. 2014 11:36
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 ?

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

Posté : ven. 11 avr. 2014 11:46
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.

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

Posté : mer. 23 avr. 2014 15:07
par davzell
merci a vous deux ca marche nikel

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

Posté : mer. 23 avr. 2014 15:10
par jguinch
N'oublie pas de passer ton sujet en [R] si c'est OK