Bonjour,
Je parse un fichier de configuration pour DHCP avec des expressions régulières et je suis actuellement confronté à un problème.
J'arrive à récupérer le bloc subnet figurant en bas du post mais je voudrais, dans ce bloc, récupérer l'IP correspondante à la directive "subnet" (celle qui suit le mot subnet et uniquement celle là).
Pour l'instant, j'utilise l'expression régulière suivante :
(?<=subnet)\\s+\\w{1,3}.\\w{1,3}.\\w{1,3}.\\w{1,3}
Qui me renvoie :
or cette IP contient un espace en début de chaîne, ce qui n'est pas bon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 192.168.0.0
S'il y a un seul espace, afin d'être sûr d'obtenir l'IP sans espaces, je peux rajouter :
(?<=subnet\\s)\\s+\\w{1,3}.\\w{1,3}.\\w{1,3}.\\w{1,3}
Mais c'est une méthode très statique qui ne trouve plus la chaine s'il y a plus d'un espace.
En revanche, s'il y a plus d'un espace (imaginons 5 espaces suite à une erreur de saisie), il m'est impossible d'imaginer une expression régulière convenable et qui s'adapte en fonction du fait qu'il puisse y avoir 1 ou 1000 espaces entre subnet et l'IP.
Si quelqu'un a plus d'imagination que moi, je l'invite à m'en faire part avec grand intérêt.
PS : Je précise qu'à cause de l'architecture, il est impossible d'envisager un retraitement de la chaine par un split ou un replace par exemple.
Merci beaucoup.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 subnet 192.168.0.0 netmask 255.255.255.0 { # Nom de votre domaine pour cette zone. option domain-name "alex.fr"; # Information sur votre réseau. option routers 192.168.0.8; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; # Plages d'adresses couvertes par DHCP. range 192.168.0.20 192.168.0.250; default-lease-time 21600; max-lease-time 43200; }
Partager