De nombreux programmeurs connaissent la joie de créer une expression régulière rapide, de nos jours souvent avec l'aide d'un service Web, ou plus traditionnellement à l'aide d'une invite interactive, ou peut-être même d'écrire un petit script dont l'expression régulière est en cours de développement et une collection de cas de test. . Dans les deux cas, le processus est itératif et assez rapide: continuez à pirater la chaîne d'aspect cryptique jusqu'à ce qu'elle corresponde et capture ce que vous voulez et rejette ce que vous ne voulez pas.
Pour un cas simple, le résultat pourrait ressembler à ceci, sous la forme d'une expression rationnelle Java:
Pattern re = Pattern.compile(
"^\\s*(?:(?:([\\d]+)\\s*:\\s*)?(?:([\\d]+)\\s*:\\s*))?([\\d]+)(?:\\s*[.,]\\s*([0-9]+))?\\s*$"
);
De nombreux programmeurs savent également qu'il est pénible de devoir modifier une expression régulière ou simplement coder autour d'une expression régulière dans une base de code héritée. Avec un peu d’édition pour le séparer, regexp est toujours très facile à comprendre pour ceux qui sont familiarisés avec les expressions rationnelles, et un vétéran de l’expression rationnelle devrait immédiatement voir ce qu’il fait (réponse à la fin du message, au cas où quelqu'un voudrait l'exercice de le découvrir eux-mêmes).
Cependant, les choses n'ont pas besoin d'être beaucoup plus complexes pour qu'une expression rationnelle devienne vraiment une chose en écriture seule, et même avec une documentation diligente (ce que tout le monde fait bien sûr pour tous les expressions rationnelles complexes qu'ils écrivent ...), la modification des expressions rationnelles devient une tâche ardue. tâche ardue. Cela peut aussi être une tâche très dangereuse si l'expression rationnelle n'est pas testée avec soin (mais tout le monde a bien sûr des tests unitaires complets pour toutes leurs expressions rationnelles complexes, qu'elles soient positives ou négatives ...).
Donc, bref, existe-t-il une solution / alternative d'écriture-lecture pour les expressions régulières sans perdre leur pouvoir? À quoi ressemblerait l'expression rationnelle ci-dessus avec une approche alternative? N'importe quelle langue convient, bien qu'une solution multilingue soit préférable, dans la mesure où les expressions rationnelles sont multilingues.
Et ensuite, ce que fait l’expression rationnelle précédente est la suivante: analyser une chaîne de nombres au format 1:2:3.4
, en capturant chaque nombre, où les espaces sont autorisés et 3
obligatoires.