Bonjour
connais tu les sites de tester de regex, ça te permet de construire ta regex et de vérifier au fur et à mesure son comportement.
Il faut juste choisir un site qui te permet de choisir le même moteur de regex.
Par exemple, avec le moteur php https://regex101.com/api/regex/delete/7PPLeNtJ9gsfrlcZ3Nspfm1b
Merci, je connais es site et je l'utilise.
Dans ce cas précis je sollicite l'aide de quelqu'un car je n'y arrive pas.
Ha, j'ai fait une boulette, j'ai copié collé le lien de suppression de la regex...
Voilà qui est mieux
https://regex101.com/r/B1eTnz/1
Et bien mille merci. j'ai vraiment du mal avec ces expressions régulières.
C'est parfait, ça fonctionne, j'ai modifié en ceci car j'ai d'autre valeur "proto".
^.+proto (?:.*), (\d+\.\d+\.\d+\.\d+).+$
Merci encore pour cette aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionDe rien
tout d'abord, en remplaçant par .*, tu n'as plus besoin de (?:) qui servait à délimiter le "ou" de UDP|2 sans les parenthèses, le ou prendrait tout avant le pipe ou tout après le pipe.
L'ajout de ?: signale que ces parenthèses ne sont pas un groupe de capture. Raison pour laquelle, dans mon exemple, tu n'as que la capture complète et l'IP.
Donc ceci
^.+proto .*, (\d+\.\d+\.\d+\.\d+).+$
est la même chose en plus simple.
Par contre, selon le moteur de regex qu'utilise ton logiciel, .* peut avoir un effet pervers.
En effet, en gros le modèle qu'on cherche, c'est "début" puis n'importe quoi 1, puis proto, puis n'importe quoi 2, puis virgule espace (c'est ce qui nous sauve pour l'instant), puis une IP, puis n'importe quoi 3 et "fin"
Supposons que pour une ligne, la seconde IP n'est pas précédée de "->" mais de ", " dans ce cas la regex aura le choix entre un "n'importe quoi 2 court et une IP et un "n'importe quoi 2 long" et une IP.
Si tu es certain que jamais la 2eme IP ne sera précédée par ", " alors cette regex fonctionnera toujours.
Si tu n'es pas certain, il serait sage de la blinder un peu.
D'ailleurs, si tu es sûr et certain que la première IP est toujours précédée de ", " et que la seconde non, alors on peut faire encore plus simple.
https://regex101.com/r/B1eTnz/2
^.+, (\d+\.\d+\.\d+\.\d+).+$
Ou mieux encore, si ton logiciel utilise un moteur regex qui accepte les "lookahead assertion" de longueur variable (comme le moteur .Net, contrairement au moteur PHP)
https://regex101.com/r/B1eTnz/3
(?<=^.+, )\d+\.\d+\.\d+\.\d+(?=.+$)
Il faut essayer pour savoir.