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
[R] Extraire nombre d'une adresse IP
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- jchd
- 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
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é.
Re: [..] extraire nombre d'une adresse ip
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 ?
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 !
- jchd
- 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
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 :
Bien sûr, le contexte sera le meilleur indice pour choisir de durcir ou pas une expression.
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
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: [R] Extraire nombre d'une adresse IP
merci a vous deux ca marche nikel
Re: [..] Extraire nombre d'une adresse IP
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 !