Expression régulière

malavita
Modifié (January 2023) dans Informatique théorique
Bonjour à tous,
une question sans doute anodine, pour laquelle je peine à trouver une réponse.
Je dispose de deux expressions régulières E1 et E2 et j'aimerais repérer les expressions contenant des expressions du type E1E2, E1E1E2E2, E1E1E1E2E2E2...
Si j'utilise l'expression régulière E1{1,}E2{1,} il détecte le motif qui m'intéresse mais également des motifs du type E1E1E2. Comment préciser que l'on cherche le même nombre de répétitions ?
D'avance merci
Bonne soirée
F.

Réponses

  • Il faut peut-être compter le nombre de E1 jusqu’à ce qu’il y ait un E2. Mais ai-je bien compris…

  • Barjovrille
    Modifié (January 2023)
    Bonjour, je ne vois pas trop comment faire ça avec juste une expression après je ne suis pas un expert...
    Si tu t'autorises à faire plusieurs étapes tu peux faire la technique de bourrin :  D'abord tu recherches juste E1{1,}.
    Tu comptes le nombre maximum de E1consécutifs dans ton texte que tu notes $N$ et tu construis l'expression régulière finale de recherche à l'aide d'une boucle for.
    expr_final='('
    pour i =1 à N-1 : 
        expr_final= expr_final +'E1{i,i}E2{i,i} | '
    fin pour
    expr_final= expr_final + 'E1{N,N}E2{N,N})'
    
    et après tu fais ta regexp avec expr_final (pour rappel la barre verticale signifie 'ou')
    Il y a peut être une méthode plus élégante.

  • malavita
    Modifié (January 2023)
    Merci de vos réponses,
    @ Barjoville: j'étais finalement arriver à un truc du genre...
    Bonne soirée.
Connectez-vous ou Inscrivez-vous pour répondre.