Partage
  • Partager sur Facebook
  • Partager sur Twitter

Oprimiser un regex

Sujet résolu
    12 mars 2022 à 15:23:04

    Bonjour à tous

    J'ai ce magnifique regex que j'aimerai optimisé :

    [\w1]{0,}|{[\w]{0,}}

    En gros je voudrais que ca donne quelque chose dans le genre, mais avec les accolade optionnel si quelqu'un a une idée svp ^^:

    (?=\{)[\w]{1,}(?<=\})

    -
    Edité par RehArk 12 mars 2022 à 15:23:36

    • Partager sur Facebook
    • Partager sur Twitter

    Créer une procédure qui s'appelle elle même, procédurception !

      12 mars 2022 à 18:43:58

      Si tu donnais un exemple de ligne que tu veux modifier ou reconnaître.
      Et ce que tu veux en sortie si tu veux modifier.
      Les accolades semblent faire double usage.
      Avec sed en mode avancé, si je veux un accolade dans les texte, je dois faire \{ et \}
      {0, } peut être remplacé par * et {1, } peut être remplacé par +
      • Partager sur Facebook
      • Partager sur Twitter

      Le Tout est souvent plus grand que la somme de ses parties.

        12 mars 2022 à 23:41:57

        Super ! merci pour ce premier retour ^^

        En gros les chaines que je voudrais reconnaitre serait 'm4 ch41n3' ou '{m4 ch41n3}'. Je ne cherche pas à les modifier mais juste a retourner vrai si elles correspondent à mon pattern
        • Partager sur Facebook
        • Partager sur Twitter

        Créer une procédure qui s'appelle elle même, procédurception !

          13 mars 2022 à 2:30:26

          Si j'exécute les commandes suivantes:
          echo m4 ch41n3 | sed -E "s/(\w *)+|\{(\w *)+\}/=/"
          Le pattern complet est remplacé par  =
          Ça marche avec ou sans les { }
          Mais ça va également marcher avec m4 z13 ch41n3
          Le -E dans la commande sed fait que j'utilise les expressions avancées.
          • Partager sur Facebook
          • Partager sur Twitter

          Le Tout est souvent plus grand que la somme de ses parties.

            13 mars 2022 à 14:42:34

            Super merci ^^

            Que ca marche aussi avec m4 z13 ch41n3  n'est pas gênant au contraire. En gros pour donner plus de détails c'est que j'ai par exemple un texte :

            "Bonjour, je suis un étudiant en informatique {et j'apprend les regex} {{ et peut être aussi la programmation avancé grâce à python 3}}"

            Mon premier filtre va me trouver "et j'apprend les regex" et "{ et peut être aussi la programmation avancé }". Avec les chaine qui ne sont pas entre {} il va y appliqué un action qui, si elle ne marche pas ou n'existe pas plante le programme, alors qu'avec les chaine qui sont entre {}, il essaye d'appliqué une action, si ca ne fonctionne pas, il ignore.

            Le but de mon second filtre (celui que je voulais optimisé car il est assez lourd) est de validé que mes chaines sont valide, par exemple ici je ne veux que les caractères qui correspondent à \w. ^^

            -
            Edité par RehArk 13 mars 2022 à 14:43:11

            • Partager sur Facebook
            • Partager sur Twitter

            Créer une procédure qui s'appelle elle même, procédurception !

              13 mars 2022 à 16:47:46

              Le \w est équivalent à [A-Za-z0-9_]
              J'ai refait mon test avec {{m4 ch41n3}} et ça me donne {=}
              Je ne sais pas si c'est ce à quoi tu t'attends.

              Avec {m4 ch41n3} z212} j'obtiens {= z212}

              -
              Edité par PierrotLeFou 13 mars 2022 à 18:26:40

              • Partager sur Facebook
              • Partager sur Twitter

              Le Tout est souvent plus grand que la somme de ses parties.

                13 mars 2022 à 19:59:41

                Oui c'est exactement ca merci ^^
                • Partager sur Facebook
                • Partager sur Twitter

                Créer une procédure qui s'appelle elle même, procédurception !

                Oprimiser un regex

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown