Как применить регулярное выражение в таблице улья для фильтрации IP-адресов? - PullRequest
1 голос
/ 08 июня 2019

У меня есть таблица кустов:

       department     ip 
          A           10.192.168.2
          B           172.16.0.1
          A           10.192.168.23
          B           172.16.0.24
                      10.192.168.56

Я хочу использовать регулярное выражение для столбца ip, чтобы я мог выбирать только записи, которые находятся в диапазоне ip, как показано ниже

вывод:

       department     ip 
          A           10.192.168.2
          A           10.192.168.23
                      10.192.168.56

Здесь диапазон ip отдела A составляет от 10.0.0.0 до 10.255.255.255.

1 Ответ

0 голосов
/ 08 июня 2019

Прежде всего, посмотрите на это: https://www.regular -expressions.info / ip.html

Regex не является инструментом для этой задачи, потому что для строгой проверки вам нужен сложный regexpэто не читается.Прочтите также это: Проверка адресов IPv4 с помощью регулярного выражения .Строгое регулярное выражение выглядит слишком сложным.Примените простое регулярное выражение, если это возможно, например:

where IP rlike '^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$'

Или, если вам нужна строгая проверка, тогда разделите IP-адрес на . и проверьте каждый октет для диапазона, как это, будет выглядеть проще, чем строго регулярное выражение (непроверено):

 select department, ip 
 from
 (
 select department, ip, split(ip, '\\.') i
   from your_table t
 )s where  i[0]=10 
      and (i[1] between 0 and 255 )
      and (i[2] between 0 and 255 )
      and (i[3] between 0 and 255 );

В python вы можете применить более элегантное решение и проверить маску / префикс сети следующим образом: check-if-ipv4-address-in-network-python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...