Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1824 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Par défaut d'un format de message en pseudo BNF à une expression regu

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Par défaut d'un format de message en pseudo BNF à une expression regu

n°1906287
tomap
Posté le 18-07-2009 à 01:03:52  profilanswer
 

Salut,
Je voudrait faire l'expression réguliere correspendante au format des messages IRC qui sont décrit avec le format suivant ici http://www.irchelp.org/irchelp/rfc [...] tml#c2_3_1 :

 

Voir : http://www.irchelp.org/irchelp/rfc [...] tml#c2_3_1 ou http://www.iprelax.fr/irc/irc_rfcfr2.php
L'expression régulière correspondante que j'ai fait est:

 

^(:(\w+)(![^ \r\n]+)?(\@[^ \r\n]+)? )?([a-zA-Z]+|\d\d\d)(( [^: \r\n][^ \r\n]*)+)( :[^\r\n]*)?

 

Mais ça ne marche pas à tout les cas; ça dois surement être bugué vu que je ne my connais pas trop en expressions régulières.
Pouvez vous m'aider à la construire ?

 

Vous pouvez voir des exemples de ce qui marche et ce qui ne marche pas ici: http://www.developpez.net/forums/d [...] ost4494010

 

Merci


Message édité par tomap le 21-07-2009 à 17:17:02
mood
Publicité
Posté le 18-07-2009 à 01:03:52  profilanswer
 

n°1906290
0x90
Posté le 18-07-2009 à 05:13:57  profilanswer
 

Une expression régulière (une vrai, pas une avec toutes les extensions non-régulières ala Perl) ne peut pas forcément modéliser une BNF.

 

Par exemple :

<foo> ::= 'a' [<foo>] 'b'


Est une BNF très simple (les mots a+b+ avec autant de a que de b) que tu ne peut pas faire avec une simple regexp.

 

Cela dit en jetant un premier coup d'oeil, cette BNF semble faisable de faire ça avec une regexp.

 

Si tu tiens à faire ça avec une regexp, commence déja par la construire par petit bout, et débugge chaque morceau séparément.

 

Commence par écrire les regexp des règles terminales de ta BNF (les règles qui appellent pas d'autres règles, juste des séries de caractères comme <lettre>, <spécial> ou <non blanc> ).
Puis crée les règles non-terminales en concaténant les variables des autres regexp (en oubliant pas les | [] et les parenthèses non-capturantes) pour la priorité.

 

Teste séparément chaque règle avant de la réutiliser, en faisant comme ça tu t'en sortira plus efficacement qu'en triturant un super-monstre de 4km de long.

 

PS: quand je dis concaténer les regexp, je veut dire concaténer la chaine de caractère qui définit la regexp, si tu additionne directement des regexp ça va pas marcher.


Message édité par 0x90 le 18-07-2009 à 05:14:08

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Par défaut d'un format de message en pseudo BNF à une expression regu

 

Sujets relatifs
[Résolu][Expression Régulière] Besoin d'aidemessage d'erreur "can not access a member of class X"
Comment importer une bdd au format Oracle data pump?Type de données incompatible dans l'expression du critère
répertoire par défaut glassfish[Résolu] Arrondir avec la fonction Format
Comment faire un <input> noir avec un defaut grisé?expression régulière en php
[HTML] creer un message d'erreurstruts validator : valeur d'un champ dans le message d'erreur
Plus de sujets relatifs à : Par défaut d'un format de message en pseudo BNF à une expression regu


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR