Non mi piacciono le espressioni regolari, ogni volta che torno ad esso mi sembra di doverlo imparare di nuovo. È anche incredibilmente difficile mantenere, modificare e capire a colpo d'occhio cosa sta facendo.
Qualcuno ha mai provato a scrivere un altro livello su di esso che trasformi in espressioni reich più semantiche? Immagino che funzioni sulla falsariga di:
AnotherString = "coffee hello beep 15"
FindString.StartsWith string longer than 5
FindString.Contains "beep" after "hello"
FindString.EndsWidth int < 20
FindString.DoesntContain "no!!" and DoesntContain "what!"
Foreach FindString match in AnotherString
...
Next
Questo probabilmente non è il più grande esempio di sempre, ma l'idea è che il modello sia costruito con una sorta di linguaggio semantico significativo che può scomporre in espressioni regolari tradizionali. Quanto sopra sarebbe molto più facile da modificare per uno sviluppatore. Ho una sorta di invisione che è come SQL / Linq in una certa misura.
Renderebbe l'espressione regolare molto più semantica e mantenibile. È stato provato prima, ed è una cattiva / buona idea provarlo? Potrebbe funzionare?
Modifica
Forse questo è un esempio migliore (so che gli URL sono notoriamente difficili da analizzare e questo è troppo semplificato):
string UserInputtedURL = "http://www.google.com/page.html?ID=5"
Protocols = {"http", "https"};
Domains = {"com", "net", "org"}
Rule.CaseSensitive = false;
Rule starts with Protocols OR starts with "www";
Rule followedby string endson "."
Rule followedby Domains
Rule if stringend or endswidth " " end else continuewith Ruleset2
RuleSet2.startswith "/"
etc...
if(UserInputtedURL.Matches(Rule)){
// URL is valid!
}