They can get weird and difficult, but most of the time I see people struggling with regexes is with really simple stuff. Once you start getting into backreferences and all sorts of other non-formal regular expression stuff and end up in firm regex-land it's time to start looking for proper parsing approaches.
I'm working on a nice tutorial with crocs for that, it remains implementing backtracking when generating valid input.