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])
最近のコメント