【发布时间】:2019-11-11 18:26:06
【问题描述】:
我想用数组的元素替换捕获的字符串组。
我正在尝试这样的事情:
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
出了什么问题以及可能的解决方案是什么?
【问题讨论】:
-
我认为没有正则表达式会更好、更容易。我更新了答案