hive中正则表达式查找IP段

本文详细介绍了如何使用正则表达式来匹配IP地址,从最初的尝试到逐步修正,最终成功实现59.48.236.x这样的IP段匹配。通过实例展示了在SQL查询中使用正则表达式进行IP筛选的方法,并提供了相关博客链接作为参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则表示IP段:59.48.236.x

1.网上查的这个拼接出来有问题,我想要的是前面可以固定的,但是后面的这个匹配的是包含的

select  ip from aa where ip regexp '^([59]+\\.)+([48]+\\.)+([236]+\\.)+([1-9]\\d)$' ;

 

2.解决固定问题

 select  ip from aa where ip regexp '^(59\\.48\\.236\\.54)$' ;

 3.最后成功

59.48.236.x

select  ip from aa where ip regexp '^(59\\.48\\.236\\.([1-9]\\d))$' ;

 

配合这两个看更好:

https://blog.youkuaiyun.com/bitcarmanlee/article/details/51106726

https://blog.youkuaiyun.com/pagean/article/details/106032082

### Hive 中正表达式的使用方法和函数 Hive 提供了几种基于正则表达式的内置函数来处理字符串数据。以下是这些函数的功能及其具体用法: #### 1. `REGEXP` 函数 该函数用于测试一个字符串是否与给定的正则表达式匹配。其基本语法如下: ```sql regexp(string source, string pattern) ``` 其中,`source` 是要测试的源字符串,而 `pattern` 则是要匹配的正则表达式模式[^2]。 如果输入字符串符合指定的正则表达式,则返回值为 `true`;否则返回 `false`。 #### 2. `REGEXP_REPLACE` 函数 此函数可以替换掉目标字符串中满足特定正则表达式的部分。其语法结构为: ```sql regexp_replace(string initial_string, string pattern, string replacement) ``` 这里,`initial_string` 表示原始字符串,`pattern` 定义了需查找并替代的部分所遵循的规则,最后由 `replacement` 参数决定新替入的内容是什么[^1]。 例如,在下面的例子中,我们将所有非数字字符从电话号码字移除: ```sql SELECT regexp_replace('(123)-456-7890', '[^0-9]', '') AS cleaned_phone; -- 输出结果:1234567890 ``` #### 3. `REGEXP_EXTRACT` 函数 当需要提取某个复杂字符串中的某一部分时可采用这个功能强大的工具——它依据设定好的模板去截取出符合条件的数据片。其定义形式如下所示: ```sql regexp_extract(string subject, string pattern, int index) ``` 这里的参数解释分别为:待操作的目标串(`subject`)、用来描述所需信息特征的模式串(`pattern`)以及指示应该选取第几个括号组内的内容作为最终输出项的位置编号(`index`)[^3]^。 举个例子来说吧,假设我们有一列包含URL地址的信息表单,并希望从中单独获取主机域名这部分资料的话就可以这样写SQL语句实现目的啦~ ```sql SELECT regexp_extract('http://www.example.com/path/to/file?query=string#fragment', '(https?|ftp):\/\/([^\/]+)', 2) AS domain_name; -- 结果应该是 www.example.com ``` 另外值得注意的一点就是关于索引位置的选择上存在一些特殊约定俗成的规定需要注意遵守哦~比如说当我们设置为零的时候就意味着我们要拿回整个匹配到的东西而不是仅仅局限于某些分组之内而已;再比如当你指定了超出实际存在的捕获群数量范围之外的一个序号就会引发错误提示出来提醒开发者重新审视自己的逻辑是否有误之处咯~ 以上便是有关于HIVE环境下运用正则表达技术的一些基础知识介绍希望能够对你有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值