Regex interpolieren in einen anderen Regex

Im folgenden Codek2 ist minimal anders alsk1. Das ist,k2 ist genau das gleiche mit der Ausnahme, dass es mit Hilfe einer Interpolation definiert wird. (Das heißt, icherwartet es ist genau dasselbe; Offensichtlich aus dem Ergebnis vonp k2 es ist nicht.)

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

Aber wie unten, mitgsub mitk1 funktioniert, während es mitk2 scheitert in einer Weise, die ich nicht verstehe.

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äöüÄÖÜ])]]/

Warum funktioniert es nicht? Was ist(?-mix:...)? Gibt es eine Möglichkeit, diese Arbeit so zu machen, wie ich es erwartet hatte?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage