• [^] # Re: Question bête

    Posté par . En réponse à la dépêche Travailler avec des expressions rationnelles. Évalué à 10.

    Existe-t-il une regex permettant de valider une regex ?

    Si on se limite aux expressions rationnelles au sens strict, non : par exemple le simple fait de pouvoir utiliser des parenthèses pour faire des groupes demande de savoir reconnaître si une expression est bien parenthésée, ce qu'une expression rationnelle ne peut pas faire. Pour ça il faut un automate à pile, car les expressions bien parenthésées ont une grammaire algébrique, mais pas rationnelle (en gros, il faut pouvoir compter, ce qu'une expression régulière ne sait pas faire).

    En pratique les « regex » (qui n'en sont pas vraiment), permettent de faire ce genre de choses grâce aux diverses extensions. Les expressions régulières Perl permettent théoriquement de faire quoi que ce soit étant donné que l'on peut exécuter conditionnellement du code quelconque si une partie de regex a matché. D'autres (comme PCRE) permettent au moins de faire des appels récursifs à des groupes, ce qui permet par exemple de décrire les expressions bien parenthésées, les palindromes, etc.