Thanks for the suggestions. This seems to do the trick:
match = "('b[0-1zZ?]*)|('o[0-7zZ?]*)|('h[0-9a-fA-FzZ?]*)|(\b(([0-9]+.?[0 -9]*)|(.[0-9]+))((e|E)(+|-)?[0-9]+)?)\b";
The numbers preceding the single quotes are actually picked up as separate constants from the parts beginning with single quotes, which is a bit counterintuitive, but it works.