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


  • ANNUAIRE
  • [EN] w3challs
    Ce site propose différents types de défis informatiques: piratage, craquage, cryptographie, stég...
    Hacking
    [EN] Exploit-db
    Une base de données d'exploits triés par genre (GHDB, Remote, Local, Web, DOS, ShellCode) à ...
    Vulnérabilités
    [EN] Security Traps
    Site de challenge qui prétend être construit non pas dans le but de parfaire vos connaissances, mais plutôt dan...
    Challenges
    [FR] Microcontest
    Cryptographie: 7, Mathématiques: 8, Image Son Vidéo: 5, Intelligence artificielle: 3, Réseau: 2, Divers: 7, Phy...
    Challenges
    [EN] hax.tor
    50 level de challenges mélangés
    Challenges
    [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking
    [EN] Packet Storm
    Packet Storm est un site qui combine nouvelles de la sécurité informatique, téléchargemen...
    Vulnérabilités

  • 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 : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut