A possible issue is that regex support will differ from RegexpQuery, but I think? that Java's is a superset, so should be ok, but I'm not sure about this one.
Actually, these are totally different syntaxes!
An alternative way to flatten these multitermqueries could be to implement o.a.l.index.Terms with what is in the term vector... then you could rewrite them with their own code.
trying to generate an equivalent string pattern could be a little problematic, for example wildcard supports escaped terms (and could contain other characters that are java.util.regex syntax characters but not wildcard syntax characters), the regex syntax is different, etc.
if you still decide you want to do it this way though, i would use o.a.l.util.automaton instead of java.util.regex? Besides being faster, this is internally what these queries are using anyway, so you can convert them with for example WildcardQuery.toAutomaton(). Then, union these and match against the union'ed machine instead of a List.
But personally i would look at going the Terms/rewriteMethod route if possible, this way all multitermqueries will "just work".