• STATISTIQUES
  • Il y a eu un total de 0 membres et 10085 visiteurs sur le site dans les dernières 24h pour un total de 10 085 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Cyber-Hacker
    CH - Cyber Hacker est un jeu par navigateur de simulation de hack, programmez et envoyez vos virus et piratez les aut...
    Hacking
    [FR] dcode
    dcode.fr est le site indispensable pour décoder des messages, tricher aux jeux de lettres, résoudre des énigmes...
    Outils / Add-on
    [EN] Gekko
    Site de challenge présenter sous la forme d'une quête. Vous êtes un agent secret qui répond sous le nom...
    Challenges
    [EN] Astalavista
    JavaScript: 1, Exploit: 2, Crypto: 34, CrackIt: 15, Stegano: 8, Programming: 12, Logic: 36, Special: 6, Science: 4, Info...
    Challenges
    [FR] Secuser
    Actualité de la sécurité informatique, fiches virus et hoax, alertes par email, antivirus gratui...
    Hacking
    [FR] µContest
    µContest est un site de challenges de programmation, c'est à dire qu'il propose des épreu...
    Hacking
    [EN] social-engineer
    Site dédié au Social Engineering en général.
    Hacking

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
validation d'une saisie utilisateur avec wildcard autorisé
20-01-2015, 10h41 (Modification du message : 20-01-2015, 10h43 par b0fh.)
Message : #4
b0fh Hors ligne
Membre actif
*



Messages : 210
Sujets : 17
Points: 309
Inscription : Jul 2012
RE: validation d'une saisie utilisateur avec wildcard autorisé
Hello,

Je te propose la regex suivante, de longueur a peu près comparable:

Code :
~$ grep -P '^\*(?:\.\d{1,3}){0,3}$|^\d{1,3}\.(?:\*|\d{1,3}\.(?:\*|\d{1,3}\.(?:\*|\d{1,3})))$' <<TEST
1.1.1.1
1.1.1.*
712.999.*
*
*.5.18.3    
*.817
*.*
5.*.*.*
*.940.*
**
1.2.3.4.5
1.2.*.4
1.2.3.
1.2
TEST

Donne

Code :
1.1.1.1
1.1.1.*
712.999.*
*
*.817

J'ai gagné un peu d'espace en remplaçant [0-9] par \d, j'en ai un peu perdu en fusionnant tes cas 2 et 3 et en développant les branches à la main. Ceci permet d'éviter trop de backtracking. Dans le cas le plus marqué, on observe un gain de 40% (mais sûrement beaucoup moins sur un cas moyen)

Code :
$ export RE_GRUIK='^\*(?:\.[0-9]{1,3}){0,3}$|^[0-9]{1,3}(?:\.[0-9]{1,3}){3}$|^(?:[0-9]{1,3}\.){0,3}\*$'
$ export RE_MAC='^\*(?:\.\d{1,3}){0,3}$|^\d{1,3}\.(?:\*|\d{1,3}\.(?:\*|\d{1,3}\.(?:\*|\d{1,3})))$'
$ yes '999.999.999.*' |head -n 6553600 >prout
$ time grep -P $RE_GRUIK prout >/dev/null

real    0m4.521s
user    0m4.497s
sys    0m0.024s
$ time grep -P $RE_MAC prout >/dev/null

real    0m2.567s
user    0m2.545s
sys    0m0.020s
+1 (3) -1 (0) Répondre


Messages dans ce sujet
RE: validation d'une saisie utilisateur avec wildcard autorisé - par b0fh - 20-01-2015, 10h41

Atteindre :


Utilisateur(s) parcourant ce sujet : 3 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut