首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在配置子表上应用正则表达式进行IP地址筛选?

如何在配置子表上应用正则表达式进行IP地址筛选?
EN

Stack Overflow用户
提问于 2019-06-08 17:55:24
回答 1查看 364关注 0票数 1

我有蜂箱表:

代码语言:javascript
运行
复制
       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范围内的记录,如下所示

输出:

代码语言:javascript
运行
复制
       department     ip 
          A           10.192.168.2
          A           10.192.168.23
                      10.192.168.56

其中部门A的ip范围为10.0.0.0到10.255.255.255。

EN

回答 1

Stack Overflow用户

发布于 2019-06-08 23:04:49

首先,看一下这个:https://www.regular-expressions.info/ip.html

正则表达式不是用于此任务的工具,因为对于严格检查,您需要不可读的复杂正则表达式。另请阅读:Validating IPv4 addresses with regexp。严格的正则表达式看起来太复杂了。如果可能,应用简单的regexp,如下所示:

代码语言:javascript
运行
复制
where IP rlike '^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$'

或者,如果您需要严格检查,则按.拆分IP地址,并检查每个八位字节的范围,如下所示,看起来比严格正则表达式(未测试)更简单:

代码语言:javascript
运行
复制
 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中,您可以应用更优雅的解决方案并检查网络掩码/前缀,如下所示:checking-if-ipv4-address-in-network-python

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56505282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档