Я хотел бы заменить захваченную группу строки элементами массива.
Я пытаюсь что-то вроде этого:
part_number = 'R1L16SB#AA'
regex = (/\A(RM|R1)([A-Z])(\d\d+)([A-Z]+)#?([A-Z])([A-Z])\z/)
g = ["X","Y","Z"]
g.each do |i|
ren_m,ch_conf,bit_conf,package_type,packing_val,envo_vals = part_number.match(regex).captures
m = part_number.sub! packing_val,i
puts m
end
Мой код с массивом g = ["X","Y","Z"]
дает желаемый результат в виде:
R1L16SB#XA
R1L16SB#YA
R1L16SB#ZA
Захваченная группа packing_val
заменяется на
g = ["X","Y","Z"]
Но когда массив содержит элементы, которые уже присутствуют в строке, он не работает:
g = ["A","B","C"]
выводит:
R1L16SB#AA
R1L16SB#BA
R1L16SC#BA
Но мой ожидаемый результат:
R1L16SB#AA
R1L16SB#BA
R1L16SB#CA
Что идет не так и что может быть возможным решением?