Если у вас действительно есть массив (как вы заявляете), и это массив строк (я предполагаю), например,
foo = [ "hello", "42 cats!", "yöwza" ]
тогда я могу представить, что вы либо хотите обновить каждую строку в массиве новым значением, либо что вы хотите изменить массив, который содержит только определенные строки.
Если первое (вы хотите «очистить» каждую строку массива), вы можете выполнить одно из следующих действий:
foo.each{ |s| s.gsub! /\p{^Alnum}/, '' } # Change every string in place…
bar = foo.map{ |s| s.gsub /\p{^Alnum}/, '' } # …or make an array of new strings
#=> [ "hello", "42cats", "yöwza" ]
Если последнее (вы хотите выбрать подмножество строк, каждая из которых соответствует вашим критериям удержания только буквенно-цифровых символов), вы можете использовать один из них:
# Select only those strings that contain ONLY alphanumerics
bar = foo.select{ |s| s =~ /\A\p{Alnum}+\z/ }
#=> [ "hello", "yöwza" ]
# Shorthand method for the same thing
bar = foo.grep /\A\p{Alnum}+\z/
#=> [ "hello", "yöwza" ]
В Ruby регулярные выражения в форме /\A………\z/
требуют соответствия всей строки, так как \A
привязывает регулярное выражение к началу строки и \z
привязывает к концу.