Partage
  • Partager sur Facebook
  • Partager sur Twitter

Regex sous excel mais en fait Regex en général

    8 mars 2025 à 2:00:35

    Bonjour,

    J'essaie de créer une Regex qui

    - me supprimerait le caractère ' et tout ce qui suit sur la même ligne

    - me supprimerait tous les blancs (espaces, tabulations, CrLf)

    - me supprimerait la séquence "&", et ce après avoir supprimé les commentaires ('...) et les blancs

    - et le tout sans toucher à ce qu'il y a entre guillemets

    J'ai essayé un REGEX.REMPLACER(Texte; """[^""]*""(*SKIP)(*F)|'.*|\s+|""&"""; "")

    Cela fonctionne bien sauf pour le "&", à priori, la première quotte du "&" est déjà prise en compte dans la fin d'un texte "..." et n'est donc plus visible.

    J'ai essayé """[^""]*(?:"")(*SKIP)(*F)|'.*|\s+|"&"

    ou """[^""]*""(&""[^""]*"")*(*SKIP)(*F)|'.*|\s+

    ou des dérivée de ça mais là, je sèche…

    Attention, un "&" dans un texte "..." ne doit pas être effacé, seuls ceux entre deux textes doivent l'être

    "abc" & "def" on efface, le "&" est entre les deux chaines, pour obtenir "abcdef"


    sur deux lignes avec commentaires

    "abc" & ' Trois premières lettres

    "def"    ' et les suivantes => "abcdef", on a effacé les commentaires ('…), les blancs et au final le "&"


    "abc""&""def" on n'efface pas, le "&" se trouvant à l'intérieur d'une chaine donc reste "abc""&""def"

    il faut un appairage des quottes pour considérer ce qu'il y a entre elles comme un texte

    Le but est de compacter au maximum les fonctions Excel car j'ai des LAMBDA qui dépassent la taille max admise (2048 caractères)

    et pour la lisibilité, j'autorise d'écrire le LAMBDA sur plusieurs lignes, avec des indentations et des commentaires

    d'où la suppression des '... et des blancs

    le "&" quant à lui est la pour recoller deux chaines se suivant

    J'espère avoir été clair dans ma demande et remercie par avance qui pourra m'aider

    PS : je ne souhaite pas de macros (VBA)

    -----

    08/03/2025 15:47

    Bonjour, 

    Voici comment j'écris la fonction et en vert en dessous, comment elle devrait être traduite avec un 

    =Compact(INDIRECT($AB$3))

    Pour l'instant, cela fonctionne à part les "&" qui restent

    -
    Edité par Eric-40 8 mars 2025 à 15:47:20

    • Partager sur Facebook
    • Partager sur Twitter
      16 mars 2025 à 17:23:05

      Bonjour,

      Personne ne peut m'aider sur ma regex ?

        - Ne pas tenir compte de tout ce qu'il y a entre guillemets

        - Supprimer tout ce qu'il y a derrière une simple quotte et la simple quotte elle-même

        - Supprimer tous les espaces, tabulations, retours à la ligne (\s)

        - Supprimer tous les "&" (sauf ceux entre guillemets)

      (C'est ce dernier point que je n'arrive pas à résoudre)

      Merci

      • Partager sur Facebook
      • Partager sur Twitter
        16 mars 2025 à 23:28:09

        Je ne connais rien à Excel.

        J'ai essayé de le faire avec sed mais je dois le faire en deux lignes de commandes, et encore ...

        • Partager sur Facebook
        • Partager sur Twitter

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

          17 mars 2025 à 2:01:50

          Merci pour la réponse

          Sur deux lignes, ça ne me dérange pas

          j'ai fait 

          "[^"]*"(*SKIP)(*F)|'.*|\s* => 

          qui supprime les commentaires et les blancs en préservant les strings

          puis

          ([^"])"&"|"&"([^"]) => $1$2

          pour supprimer les "&" qui ne sont pas dans les strings mais ça ne fonctionnera pas à tous les coups

          c'est cette 2ème Regex qui me pose pb, supprimer les "&" qui sont en dehors des strings

          Sachant que sur Excel, pour échapper un guillemet, il faut le doubler ("" et non \")

          -
          Edité par Eric-40 17 mars 2025 à 2:05:23

          • Partager sur Facebook
          • Partager sur Twitter
            17 mars 2025 à 17:21:28

            Il y a dans mon esprit plusieurs scénario possibles
            ..."&"...
            ..."..."...

            ..."..."&"..."...
            ..."&"..."..."...
            ..."&"..."..."&"..."...
            et les inverses avec le "&" à la fin.
            Et je ne sais pas si on peut avoir plus d'un objet de chaque type sur une ligne.

            -
            Edité par PierrotLeFou 17 mars 2025 à 17:24:26

            • Partager sur Facebook
            • Partager sur Twitter

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

            Regex sous excel mais en fait Regex en général

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown