はこれがあります文字列をipsの範囲に変換する1つの方法です。
def convert_to_range(ip)
arr = ip.split('.')
ndx = arr.index { |s| s =~ /-/ }
f,l = arr[ndx].split('-')
(f..l).map { |s| [*arr.first(ndx), s, *arr[ndx+1..-1]].join('.') }
end
convert_to_range("24.53.94-105.241")
#=> ["24.53.94.241", "24.53.95.241", "24.53.96.241", "24.53.97.241",
# "24.53.98.241", "24.53.99.241", "24.53.100.241", "24.53.101.241",
# "24.53.102.241", "24.53.103.241", "24.53.104.241", "24.53.105.241"]
convert_to_range("24.53-58.105.241")
#=> ["24.53.105.241", "24.54.105.241", "24.55.105.241", "24.56.105.241",
# "24.57.105.241", "24.58.105.241"]
convert_to_range("24-26.58.105.241")
#=> ["24.58.105.241", "25.58.105.241", "26.58.105.241"]
convert_to_range("26.58.105.241-248")
#=> ["26.58.105.241", "26.58.105.242", "26.58.105.243", "26.58.105.244",
# "26.58.105.245", "26.58.105.246", "26.58.105.247", "26.58.105.248"]
詳細を必要とします。 DBに必要な列を追加することはできますか?それとも既に使用している形式を使用することを余儀なくされていますか?これまで何か試してみましたか? – Beartech
また、あなたは、行番号2のような単一のエントリの代わりに、すべてがHarvard | [email protected] | 34.24.123。* '.123から.198までの各IPの行がありますか? DB内のデータをどのように表示するかについて、より具体的な例を挙げる必要があります。 – Beartech
最後に、少なくともいくつかのオクテットには '*'があります。それは0-255のそれぞれのエントリが必要なことを意味しますか? – Beartech