J'ai donc besoin de faire correspondre une adresse IPv6 qui peut ou non avoir un masque. Malheureusement, je ne peux pas utiliser une bibliothèque pour analyser la chaîne.Comment puis-je faire correspondre des adresses IPv6 avec une regex Perl?
Le bit de masque est assez facile, dans ce cas:
(?:\/\d{1,3})?$/
La partie difficile est les différents formats d'une adresse ipv6. Il doit correspondre à :: boeuf, boeuf ::, boeuf :: boeuf, etc.
Une mise à jour: Je suis presque ..
/^(\:\:([a-f0-9]{1,4}\:){0,6}?[a-f0-9]{0,4}|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){0,6}?\:\:|[a-f0-9]{1,4}(\:[a-f0-9]{1,4}){1,6}?\:\:([a-f0-9]{1,4}\:){1,6}?[a-f0-9]{1,4})(\/\d{1,3})?$/i
Je suis, dans ce cas restreint aux années perl regex.
Est-ce que ce sont les devoirs? Ou pourquoi ne pouvez-vous pas utiliser une bibliothèque et qu'est-ce qui vous fait dire que vous êtes limité à "perl's regex"? – innaM
La langue que j'utilise est perl. Les changements nécessaires pour permettre l'utilisation d'autres bibliothèques seraient plus de travail. Définir les devoirs? Je suis à la maison et je travaille. C'est pour l'un des projets sur lesquels je travaille - si vous voulez dire à des fins éducatives, alors non. – imnotneo
"Les changements nécessaires pour permettre l'utilisation d'autres bibliothèques seraient plus de travail." -- J'en doute. Au moins pas à long terme. De manière générale, Perl n'utilise pas de modules du CPAN, mais seulement la moitié de la langue. Refuser même d'utiliser de simples modules Perl purs, puis demander à d'autres de trouver des solutions à des problèmes précédemment résolus semble ... inefficace. – tsee