Voglio dire, non usarle come riconoscitori di stringhe ma come generatori.
Beh, a me la cosa ossessionava da un po' di tempo. La fregatura é che per fare una semplice prova bisogna riscrivere il parser delle espressioni regolari da zero, dato che nessun motore regex che io conosca espone il parser in maniera semplice.
Passata la paura ho usato The Gardens Point Parser Generator, un emulo di YACC per C#, ho rubato una grammatica già fatta da qui, l'ho estesa un po' ed é saltato fuori rexgen.
C:\tmp>rexgen "(a+b*[0-9])+"
abbbbbbb4aaaaabbbbbbbbbb6aaaaaabbb1abbb6aaaabbbbbbbbb6
C:\tmp>
Attualmente supporta concatenamento (ovviamente), raggruppamento (
(...)) quantificatori (+,* e ?), range ([...]) positivi e negati ([^...]) ed il metacarattere ., oltre naturalmente all'escaping per i caratteri speciali (()[]\.+*?) e non stampabili (\a\b\f\n\r\t\v). Il codice é parecchio brutto, ma se lo volete davvero vedere lo trovate qui.
Le ripetizioni indotte dai quantificatori
* e + sono arbitrariamente limitate ad un massimo di 10. Specificate semplicemente l'espressione regolare come (unico) parametro della linea di comando, senza dimenticare di usare le virgolette se utilizzate | o degli spazi
No comments:
Post a Comment