Интерполяция регулярных выражений в другое регулярное выражение

В следующем кодеk2 минимально отличается отk1, Это,k2 точно такой же, за исключением того, что он определяется с помощью интерполяции. (То есть яожидаемый это должно быть точно так же; Очевидно из результатаp k2 это не так.)

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

Но, как показано ниже, используяgsub с участиемk1 работает, тогда как используя его сk2 терпит неудачу так, как я не понимаю.

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

Почему это не работает? Что такое(?-mix:...)? Есть ли способ заставить эту работу работать так, как я ожидал?

Ответы на вопрос(4)

Ваш ответ на вопрос