def regexify(re)
re = re.source if re.respond_to?(:source)
re.
gsub(/^\/?\^?/, '').gsub(/\$?\/?$/, '').
gsub(/\{(\d+)\}/, '{\1,\1}').gsub(/\?/, '{0,1}').
gsub(/(\[[^\]]+\])\{(\d+),(\d+)\}/) {|match| $1 * Array(Range.new($2.to_i, $3.to_i)).sample }.
gsub(/(\([^\)]+\))\{(\d+),(\d+)\}/) {|match| $1 * Array(Range.new($2.to_i, $3.to_i)).sample }.
gsub(/(\\?.)\{(\d+),(\d+)\}/) {|match| $1 * Array(Range.new($2.to_i, $3.to_i)).sample }.
gsub(/\((.*?)\)/) {|match| match.gsub(/[\(\)]/, '').split('|').sample }.
gsub(/\[([^\]]+)\]/) {|match| match.gsub(/(\w\-\w)/) {|range| Array(Range.new(*range.split('-'))).sample } }.
gsub(/\[([^\]]+)\]/) {|match| $1.split('').sample }.
gsub('\d') {|match| Numbers.sample }.
gsub('\w') {|match| Letters.sample }
end