Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Informatique
  3. Autres / Divers / Découvertes
  4. Les expressions régulières/regex

Les expressions régulières/regex

Scheduled Pinned Locked Moved Autres / Divers / Découvertes
6 Posts 2 Posters 2.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • mars073M
    mars073M
    mars073
    wrote on last edited by
    #1

    <p>Bonjour à tous,</p><p>Vu que j'ai remarqué que dans mes derniers tuto j'utilisais pas mal de regex j'ai décidé d'en faire un topic plus approfondit.</p><p></p><p>Qu'est-ce que veux dire regex d'abord? tout simplement "<strong>REG</strong>ular <strong>EXpression</strong>" ou "Expression régulière" (expreg) en français si vous n'avez pas compris. Et si vous ne savez pas ce que c'est une expression régulière cela explique le fait que vous lissez ce topic 😛 </p><p></p><p>Bref en d'autres termes une expression régulière, aussi appelé "motif de recherche", est la structure que l'on donne à une chaîne de caractère et qui est beaucoup utilisé en programmation (exemple: vérifier lors qu'une inscription la structure d'un email) enfin je ne vois pas d'autres domaines où cela pourrait-être utilisé ._.</p><p></p><p>Petite notion à savoir: un caractère en majuscule n'est pas le même en minuscule (a=/=A), un espace est aussi un caractère, un caractère peut-être inexistant(NULL) selon le contexte de l'utilisation il peut donc être représenté par un espace ou ne pas être mit, les caractères alphanumériques sont les caractères de base de a à z et de 0 à 9 (majuscule et minuscules inclussent).</p><p></p><p>Vous allons constituer le regex à l'aide de divers symbole:</p><p>- () : groupement, utilisé pour récupération de la donnée le plus souvent</p><p>Exemple: pas d'idée sans spoil la suite</p><p>- [] : groupe de caractères possible</p><p>Exemple: les caractères possibles sont a, b et/ou c : [abc]</p><p>- [^] : Tout les caractères sauf...</p><p>Exemple: ne peut pas commencer par un 0: ^[^0]</p><p>- ^ : l'expression commence par ...</p><p>Exemple: ligne qui commence par "meli": ^meli</p><p>- $ : l'expression termine par ...</p><p>Exemple: ligne qui termine par "es": es$</p><p>- - : tout les caractères compris entre</p><p>Exemple: Tout les caractères de a à z: [a-z]</p><p>- {} : répétition du caractère</p><p>Exemple: Il faut entre 2 et 5 caractère de a à z: [a-z]{2,5}</p><p>- * : répétition du nombre du caractère entre 0 à l'infini</p><p>Exemple: les caractères a, b et c peuvent être présent: [abc]*</p><p>- + : répétition au moins une fois</p><p>Exemple: les caractères a, b ou c doit être présent au mains une fois: [abc]+</p><p>- . : n'importe quel caractère</p><p>Exemple: n'importe quel caractère qui doit-être entre d et b: d.b</p><p>- ? : le caractère avant est optionnel</p><p>Exemple: le s à la fin de patates n'est pas obligatoire: patates?</p><p>- \ : quand vous voulez utiliser un caractère qui est un symbole de regex pour le "désactiver"</p><p>Exemple: n'importe quel caractère au moins répété au moins une fois entre des parenthèses: (.+)</p><p>- (|) : différente possibilité possible</p><p>Exemple: différentes terminaison possible mais ça commence par meli: ^meli(chat|shout|télécommunicateur)</p><p></p><p>Bon après il y a les variantes en programmation pour exemple pour rendre insensible à la cas (ne pas faire la différence entre la majuscule et minuscule):</p><p>en php on met un # puis des paramètres dont "i" dans ce cas:</p><p></p><div></div><pre class="ipsCode">(exemple|example)#i</pre><p></p><p>dans un htaccess c'est au début toujours avec un "i"</p><p></p><pre class="ipsCode prettyprint">(?i)(exemple|example)
    </pre>Je vais encore vous donner quelques exemples pour essayer de mieux vous faire synthétiser, on va travailler en contexte car j'ai faire des contextes:<p>-premier contexte un système d'inscription:</p><p></p><pre class="ipsCode prettyprint lang-auto"># vérification que le nom d'utilisateur ne contient que des caractères alphanumérique minimum un caractère:
    ^[a-zA-Z0-9]+$

    vérification d'une adresse email:

    ^[a-zA-Z0-9.]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,5}$

    d'après la norme RFC machin le regex correct est extrêmement long et moche

    </pre>- deuxième dans un htaccess je "capte" le chiffe entré dans dans l'url (qui servira par la suite à générer une image:<p></p><pre class="ipsCode prettyprint lang-auto"># on cherche un chiffre qui est présent au moins une fois est qui peut contenir un point, le point était la virgule d'un chiffre en programmation
    ^image-([0-9]+|[0-9]+.[0-9]+).png$
    </pre>comme vous le voyez j'ai mis plusieurs possibilités (2) qui sont séparées par une | j'ai mis un \ devant les caractères qui on une symbolique en regex, et donc si j'entre /image-073.png cela retournera 073 et si j'entre /image-0.73.png cela retournera 0.73<p></p><p>il existe encore quelques trucs:</p><p>- \d : remplace [0-9] c'est le d pour <u>d</u>écimal mais je ne sais plus si ça prend les points en compte (normalement non)</p><p>- \n : nouvelle ligne</p><p>en php:</p><p>- [[:alnum:]]+ : il y en a plein de ce type que je n'ai jamais utilisé, mais je pense dans ce cas-ci ça vérifie si c'est une numérique donc la syntaxe est assez large ._.</p><p></p><p>je pense avoir tout globalement tout dit, si vous avez besoin aide vous n'avez cas répondre au sujet 😛 </p><p></p><p>Site assez sympa: <a href="http://www.expreg.com/" rel="external nofollow">expreg.com</a></p>

    Aide à l'apprentissage et la réalisation pour des graphismes, des programmes, des sites ou autres.Signature aléatoire, proposez vous aussi une signature ici!

    1 Reply Last reply
    3
    • AzadA
      AzadA
      Azad
      wrote on last edited by
      #2

      <p>Merci du partage, c'est pratique lorsqu'on traite des données saisies par les utilisateurs côté serveur. 🙂 <br/>
      +1 rep.</p>

      Administrateur du forum.
      Contactez-moi par message privé ou par mail.

      1 Reply Last reply
      0
      • mars073M
        mars073M
        mars073
        wrote on last edited by
        #3

        <p>Je m'en sers aussi pour la collecte d’information sur des sites externes, c'est super utile.</p>

        Aide à l'apprentissage et la réalisation pour des graphismes, des programmes, des sites ou autres.Signature aléatoire, proposez vous aussi une signature ici!

        1 Reply Last reply
        0
        • AzadA
          AzadA
          Azad
          wrote on last edited by
          #4

          <p>Pour un crawler ? Comment ça ?</p>

          Administrateur du forum.
          Contactez-moi par message privé ou par mail.

          1 Reply Last reply
          0
          • mars073M
            mars073M
            mars073
            wrote on last edited by
            #5

            <p>Par exemple pour le site d'une guilde j'ai fais un script qui charge la page d'un autre site où il y a un top avez plein d'information et je l'ai récupère, les reconditionnes et je l'ai réaffiche ou je génère une image avec vu qu'il chargait 5 sites en même temps et que certains sites prennent 5sec à charger je fais un cache d'un jour pour ne pas ralentir le site car pour moi le site doit être affiche en moins de 1sec même si du contenu doit encore charger derrière 😛 </p>

            Aide à l'apprentissage et la réalisation pour des graphismes, des programmes, des sites ou autres.Signature aléatoire, proposez vous aussi une signature ici!

            1 Reply Last reply
            0
            • AzadA
              AzadA
              Azad
              wrote on last edited by
              #6

              <p>Pas mal, j'aime bien le cheminement. 🙂 </p>

              Administrateur du forum.
              Contactez-moi par message privé ou par mail.

              1 Reply Last reply
              0

              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

              With your input, this post could be even better 💗

              Register Login
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              • Login

              • Login or register to search.
              Powered by NodeBB Contributors
              • First post
                Last post
              0
              • Categories
              • Recent
              • Tags
              • Popular
              • World
              • Users
              • Groups