Expression régulière particulière

Expression régulière particulière - C#/.NET managed - Programmation

Marsh Posté le 16-05-2007 à 11:25:12    

Je souhaiterais faire une expression régulière vérifiant la validité d'une chaîne de caractère selon le format suivant :  

  • un chiffre de 1 à 5 --> [1-5]
  • un chiffre de 1 à 5 suivi de AND ou OR puis d'un autre chiffre de 1 à 5
  • la même chose qu'au dessus avec des parenthèsages


Exemples :  

  • 1
  • (1)
  • 1 OR 2
  • (1 AND 2) OR (3 OR 1)


 
Merci d'avance  ;)


Message édité par Goose6 le 16-05-2007 à 11:25:50
Reply

Marsh Posté le 16-05-2007 à 11:25:12   

Reply

Marsh Posté le 16-05-2007 à 12:43:28    

tu veux qu'on le fasse ?

Reply

Marsh Posté le 16-05-2007 à 14:32:59    

Etant donné que je ne connais pas grand chose aux expressions régulières, j'aimerais juste connaître la méthode pour effectuer la récurrence dans les parenthèses parce que le reste semble accessible.
^/(\()[1-5].((AND|OR).[1-5].){0|1}\)
 
Enfin bon, je ne sais pas comment l'agencer, j'ai compris le plus gros mais pas l'essentiel... :(


Message édité par Goose6 le 16-05-2007 à 14:36:00
Reply

Marsh Posté le 18-05-2007 à 14:27:55    

La récurrence ce n'est pas le fort des expressions régulières, tu ne pourras donc pas gérer tous les cas avec une simple regex.
 
Ce que tu demandes ressemble plutôt à ce qu'effectue un tokenizer.
 
En gros, tu vas certainement devoir analyser la chaîne "à la mano". Les regex peuvent t'aider à diviser ta chaine en plusieurs jetons, et tu devras ensuite analyser le sens de chaque jeton pour construire un arbre pour ton expression.
 
Le but étant ensuite de pouvoir interroger l'arbre comme une expression.
 
Bienvenue dans le monde des parser/lexer :D

Message cité 1 fois
Message édité par styx31 le 18-05-2007 à 14:30:03
Reply

Marsh Posté le 22-05-2007 à 15:32:38    

styx31 a écrit :

La récurrence ce n'est pas le fort des expressions régulières, tu ne pourras donc pas gérer tous les cas avec une simple regex.
 
Ce que tu demandes ressemble plutôt à ce qu'effectue un tokenizer.
 
En gros, tu vas certainement devoir analyser la chaîne "à la mano". Les regex peuvent t'aider à diviser ta chaine en plusieurs jetons, et tu devras ensuite analyser le sens de chaque jeton pour construire un arbre pour ton expression.
 
Le but étant ensuite de pouvoir interroger l'arbre comme une expression.
 
Bienvenue dans le monde des parser/lexer :D


Merci beaucoup du coup de paluche :jap: , en effet, j'ai décomposé grace à ce StringTokenizer ma phrase ( ==> parser) et ensuite j'ai pu analyser syntaxiquement les "jetons" de ma phrase ( ==> lexer).
 
Dommage pour la RegEx, j'aurais bien aimé...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed