Regex negation chaine caractère
urahara78
Messages postés
294
Date d'inscription
Statut
Membre
Dernière intervention
-
ktm620enduro Messages postés 293 Date d'inscription Statut Membre Dernière intervention -
ktm620enduro Messages postés 293 Date d'inscription Statut Membre Dernière intervention -
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...
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...
A voir également:
- Regex ne commence pas par
- Je commence la nuit et je termine le matin ✓ - Forum Loisirs / Divertissements
- Bonjour je cherche la réponse à la devinette svp ✓ - Forum Loisirs / Divertissements
- Expressions régulières "ne contient pas ..." ✓ - Forum Programmation
- Musique qui commence doucement puis accélère techno - Forum Musique / Radio / Clip
- Si la lecture ne commence pas dans quelques secondes essayez de redémarrer votre appareil - Forum YouTube
5 réponses
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
(([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
hello
$ cat a1 192.1.1.1 193.1.1.1 200.1.1.1 333.192.1.1 192.2.3.4 $ $ grep -P '(?<!192)\.\d+\.\d+\.\d+$' a1 193.1.1.1 200.1.1.1 333.192.1.1 $
Salut,
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.
Et '[^1][^9][^2]' ne le ferait pas ?
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.
Et '[^1][^9][^2]' ne le ferait pas ?
[^1][^9][^2]\.\d+\.\d+\.\d+ sur les ip suivantes donne ça : ( ça match en gras)
192.1.1.1
200.4.4.4
900.5.5.5
290.4.4.4
333.2.1.9
291.3.3.3
210.3.3.3
EDIT :
J'utilise ce site pour tester mes regex : https://regexr.com/
La 21 turbo c'est pas le genre de voiture pour aller faire les courses au supermarché mais plutôt pour faire la course jusqu'au supermarché !
192.1.1.1
200.4.4.4
900.5.5.5
290.4.4.4
333.2.1.9
291.3.3.3
210.3.3.3
EDIT :
J'utilise ce site pour tester mes regex : https://regexr.com/
La 21 turbo c'est pas le genre de voiture pour aller faire les courses au supermarché mais plutôt pour faire la course jusqu'au supermarché !
Salut,
"Je souhaite "tout simplement" récupérer des adresses IP ne commençant PAS par 192."
Si on suppose que la syntaxe est correcte,
exemple avec Regex:
Pour tester, les IP sont dans un tableau.
exemple sans passer par Regex:
System.out.println("Avec startsWith(\"192.\")");
for(int i = 0; i < tabIp.length; i++)
{
if (tabIp[i].startsWith("192."))
System.out.println("On ne prend pas " + tabIp[i]);
else
System.out.println("On prend " + tabIp[i]);
}
Cordialement,
Dan
"Je souhaite "tout simplement" récupérer des adresses IP ne commençant PAS par 192."
Si on suppose que la syntaxe est correcte,
exemple avec Regex:
Pour tester, les IP sont dans un tableau.
String[] tabIp = {"192.1.1.1", "219.4.4.4", "220.5.5.5", "210.4.4.4", "125.2.1.9", "192.2.2.2", "211.3.3.3", "255.3.3.3"}; Pattern pat = Pattern.compile("192\\.."); // le motif est "192." for(int i = 0; i < tabIp.length; i++) { Matcher m = pat.matcher(tabIp[i]); if(m.find()) { System.out.println("On ne prend pas " + tabIp[i]); } else System.out.println("On prend " + tabIp[i]); }
exemple sans passer par Regex:
System.out.println("Avec startsWith(\"192.\")");
for(int i = 0; i < tabIp.length; i++)
{
if (tabIp[i].startsWith("192."))
System.out.println("On ne prend pas " + tabIp[i]);
else
System.out.println("On prend " + tabIp[i]);
}
Cordialement,
Dan
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
[^\d]((([02]?[0-9]?[0-9])|(1[0-8][0-9])|(19[013-9]))\.\d+\.\d+\.\d+)