Existe-t-il une expression régulière qui correspond à des expressions régulières valides ?
(Je sais qu'il existe plusieurs variations d'expressions régulières. Une seule suffirait.)
Existe-t-il une expression régulière qui correspond à des expressions régulières valides ?
(Je sais qu'il existe plusieurs variations d'expressions régulières. Une seule suffirait.)
Y a-t-il une expression rationnelle qui correspond à une expression rationnelle valide ?
Par définition, c'est assez simple : Non.
Le langage de tous les regex est non un langage régulier (il suffit de regarder les parenthèses imbriquées) et donc il ne peut y avoir une expression régulière pour l'analyser.
Si vous souhaitez simplement vérifier si une expression régulière est valide ou non, essayez simplement de la compiler avec le langage de programmation ou la bibliothèque d'expressions régulières avec laquelle vous travaillez.
L'analyse des expressions régulières est loin d'être triviale. En tant qu'auteur de RegexBuddy, j'ai déjà parcouru ce chemin plusieurs fois. Si vous voulez vraiment le faire, utilisez une expression régulière pour découper l'entrée et laissez la logique d'analyse au code procédural. Autrement dit, votre expression régulière correspondrait à un jeton d'expression régulière (^
, $
, \w
, (
, )
, etc.) à la fois, et votre code procédural vérifierait s'ils sont dans le bon ordre.
Malheureusement, la plupart des expressions régulières invalides le sont en raison d'erreurs de parenthèses imbriquées. C'est exactement le type de chaînes que les expressions régulières ne peuvent pas matcher. (D'accord, certains systèmes d'expressions régulières sophistiqués ont des extensions de récursion, mais c'est rare)
Comme déjà mentionné, vous ne pouvez pas décrire les expressions régulières avec une expression régulière en raison de leur nature récursive. Vous aurez besoin d'une grammaire contextuelle pour cela.
Mais quel serait l'intérêt d'avoir une telle expression régulière, de toute façon? Si vous voulez simplement vérifier si une expression régulière est correcte, vous pouvez simplement essayer de l'utiliser (Pattern.compile(regexp) en Java) et si elle crie qu'elle n'est pas valide.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.