RewriteCond %{REMOTE_ADDR} ^61\.112\.(7[2-9]|8[0-1])\. [OR]
RewriteCond %{REMOTE_ADDR} ^61\.199\.4[1-8]\. [OR]
RewriteCond %{REMOTE_ADDR} ^219\.114\.(2[6-9]|3[0-9]|4[0-1])\. [OR]
RewriteCond %{REMOTE_ADDR} ^219\.160\.1(2[5-9]|[3-5][0-9]|60)\. [OR]
RewriteCond %{REMOTE_ADDR} ^219\.165\.([1-9]|1[0-5])\. [OR]
RewriteCond %{REMOTE_ADDR} ^220\.104\.1(1[1-9]|[2-4][0-9]|50)\. [OR]
RewriteCond %{REMOTE_ADDR} ^220\.97\.(1[8-9]|[2-3][0-9]|4[0-1])\. [OR]
RewriteCond %{REMOTE_ADDR} ^221\.188\.(9|(1[0-9]|[2-7][0-9]|8[0-3]))\. [OR]
RewriteCond %{REMOTE_ADDR} ^221\.189\.1(7[4-9]|8[0-1])\. [OR]
RewriteCond %{REMOTE_ADDR} ^222\.146\.(1(0[5-9]|[1-8][0-9]|9[0-9])|20[0-3])\.
副産物。はじめと終りの数字をあたえると、その間の数字にマッチする正規表現を返す Ruby スクリプト。
# $ ruby reg.rb 1 4
# [1-4]
# $ ruby reg.rb 10 43
# (1[0-9]|[2-3][0-9]|4[0-3])
def reg(s, e)
raise if s.to_i > e.to_i
if s.size == e.size
reg_p(s, e)
else
'(' + reg(s, '9' * s.size) + '|' + reg( '1' + '0' * s.size, e) + ')'
end
end
def reg_p(s, e)
s = s.to_s
e = e.to_s
if s == e
s
elsif e.size == 1
'[' + s + '-' + e + ']'
elsif s[0, 1] == e[0, 1]
s[0, 1] + reg(s[1..-1], e[1..-1])
else
nines = '9' * (s.size - 1)
zeros = '0' * (s.size - 1)
if s[0, 1].next == e[0, 1]
'(' +
reg(s, s[0, 1] + nines) +
'|' +
reg(e[0, 1] + zeros, e) +
')'
else
'(' +
reg(s, s[0, 1] + nines) +
'|' +
reg(s[0, 1].next, (e[0, 1].to_i - 1).to_s) + '[0-9]' * (s.size - 1) +
'|' +
reg(e[0, 1] + zeros, e) + ')'
end
end
end
puts reg(ARGV[0], ARGV[1])
最近のコメント