Les expressions régulières sont illisibles...
... donc rendons les lisibles, maintenables et vérifiables à la compilation.
C'est ce qui a motivé Joshua Flanagan pour développer une API qui encapsule la syntaxe très particulière des expressions régulières.

Expression régulière pour identifier les dates européennes. Bah si.
ReadableRex, c'est le nom de l'API .Net open-source, simplifie radicalement la manipulation des expressions régulières.
Avec ReadableRex, ceci :
const string findGamesPattern = @"<div\s*class=""game""\s*id=""(?<gameID>\d+)-game""(?<content>.*?)<!--gameStatus\s*=\s*(?<gameState>\d+)-->";
devient cela :
Pattern findGamesPattern = Pattern.With.Literal(@"<div")
.WhiteSpace.Repeat.ZeroOrMore
.Literal(@"class=""game""").WhiteSpace.Repeat.ZeroOrMore.Literal(@"id=""")
.NamedGroup("gameId", Pattern.With.Digit.Repeat.OneOrMore)
.Literal(@"-game""")
.NamedGroup("content", Pattern.With.Anything.Repeat.Lazy.ZeroOrMore)
.Literal(@"<!--gameStatus")
.WhiteSpace.Repeat.ZeroOrMore.Literal("=").WhiteSpace.Repeat.ZeroOrMore
.NamedGroup("gameState", Pattern.With.Digit.Repeat.OneOrMore)
.Literal("-->");
J'aime beaucoup.
La magie des fluent interfaces...
J'étais tombé sur cette librairie il y a quelques temps déjà ; je n'ai pas eu l'occasion de l'utiliser.
Rédigé par : Romain Verdier | 30 juin 2008 à 09:55
Tu as essayé de mettre la regex pour les dates européennes sous forme "readable" ?
Je ne suis pas convaincu que cette API puisse rendre la chose plus simple à lire...
Ce qu'il faudrait c'est aller dans une direction où l'on puisse se passer définitivement des regex, mais c'est une autre histoire...
Rédigé par : Oaz | 30 juin 2008 à 10:03
@Romain : "fluent interfaces" : tu m'as enlevé les mots de la bouche, enfin plutôt d'un prochain billet ;)
@Oaz : oui l'exemple des dates européennes est un monstre, fluent ou pas fluent. Pour ce pb bien spécifique, un bon candidat pour parvenir à une interface gérable malgré la complexité du problème de parsing pourrait être un DSL. Par exemple une spécialisation des expressions régulières dédiée au parsing des dates.
Rédigé par : DenisDollfus | 30 juin 2008 à 21:20