Yes, rust declarative macros shine at exactly this kind of problem. And nom does use this to generate the implementation.
But for some reason it's customary in rust to stick to a lower number of autogenerated implementations. My first guess would be it might be a compile time issue?
If I'm understanding correctly, some Regex features may require implementing more than 21 rules for a thorough and complete implementation.