Regex negation chaine caractère

Fermé
urahara78 Messages postés 284 Date d'inscription mercredi 10 février 2010 Statut Membre Dernière intervention 3 mai 2015 - 17 janv. 2012 à 11:59
ktm620enduro Messages postés 293 Date d'inscription mardi 21 septembre 2010 Statut Membre Dernière intervention 12 mars 2013 - 30 janv. 2012 à 22:56
Bonjour,

En ayant marre de me tirer les cheveux dans tous les sens pour savoir comment faire je viens poser ma question ici.
Je souhaite "tout simplement" récupérer des adresses IP ne commençant PAS par 192.
Hors en regex le symbole ^ utilisé dans [^192] ne convient pas car il recherche les nombres un à un et non la chaine de caractère complète.
J'ai vu sur cette page https://stackoverflow.com/questions/977251/regular-expressions-and-negating-a-whole-character-group qu'ils ont trouvé apparemment un moyen d'y arriver mais je n'arrive pas à l'appliquer à mon exemple.

192\.\d+\.\d+\.\d+ match les ip commençant par 192
(?!192)\.\d+\.\d+\.\d+ devrait matcher celles ne commençant pas par 192, mais ça ne fonctionne pas.

Une idée? Car je commence à perdre espoir...




5 réponses

KX Messages postés 16664 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 21 janvier 2023 2 998
Modifié par KX le 17/01/2012 à 12:47
Testé en Java et sur ton site :
(([02]?[0-9]?[0-9])|(1[0-8][0-9])|(19[013-9]))\.\d+\.\d+\.\d+

Remarque: \d+ c'est un peu violent alors que seuls les nombres 0 à 255 sont autorisés.
La confiance n'exclut pas le contrôle
1
urahara78 Messages postés 284 Date d'inscription mercredi 10 février 2010 Statut Membre Dernière intervention 3 mai 2015 32
17 janv. 2012 à 13:41
Sur la chaine 192.3.3.4 il ne match pas le 1 seulement. Hors il ne devrait rien matcher du tout. Je cherche à ce que le regex ne match que les IP ne commençant pas par 192 :)
0
KX Messages postés 16664 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 21 janvier 2023 2 998
17 janv. 2012 à 13:49
Rajoute un [^\d] devant alors :
[^\d]((([02]?[0-9]?[0-9])|(1[0-8][0-9])|(19[013-9]))\.\d+\.\d+\.\d+)
0