Interpolacja wyrażeń regularnych do innego wyrażenia regularnego

W następującym kodziek2 jest minimalnie różny odk1. To jest,k2 jest dokładnie taki sam, z wyjątkiem tego, że jest zdefiniowany za pomocą interpolacji. (To znaczy jaspodziewany to dokładnie to samo; Oczywiście z wynikup k2 nie jest.)

v  = /[aeiouAEIOUäöüÄÖÜ]/                 # vowels
k1 = /[[ßb-zB-Z]&&[^[aeiouAEIOUäöüÄÖÜ]]]/ # consonants defined without interpolation
k2 = /[[ßb-zB-Z]&&[^#{v}]]/               # consonants defined same way, but with interpolation

Ale jak poniżej, używającgsub zk1 działa, a używając gok2 zawodzi w sposób, którego nie rozumiem.

all_chars = "äöüÄÖÜß"<<('a'..'z').to_a.join<<('A'..'Z').to_a.join

p all_chars                  # "äöüÄÖÜßabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
p all_chars.gsub( k1 , '_' ) # "äöüÄÖÜ_a___e___i_____o_____u_____A___E___I_____O_____U_____"
p all_chars.gsub( k2 , '_' ) # "äöüÄÖÜ_abcdefghijklm_o_____u__x__ABCDEFGHIJKLMNOPQRSTUVWXYZ"
p k1                         # /[[ßb-zB-Z]&&[^[aeiouAEIOUäöüÄÖÜ]]]/
p k2                         # /[[ßb-zB-Z]&&[^(?-mix:[aeiouAEIOUäöüÄÖÜ])]]/

Dlaczego to nie działa? Co jest(?-mix:...)? Czy istnieje sposób, aby uczynić tę pracę tak, jak tego oczekiwałem?

questionAnswers(4)

yourAnswerToTheQuestion