IP地址的Hive正则表达式

时间:2019-04-11 16:33:21

标签: hive hiveql

如何修改以下代码:

SELECT regexp_extract('156.154.161.94', '[A-Za-z0-9-]+\.[A-Za-z0-9-]+\.$', 0) AS ip;
161.94

要返回IP地址的前2个或3个八位位组?换句话说:156.154156.154.161

2 个答案:

答案 0 :(得分:2)

前两个

SELECT regexp_extract('156.154.161.94', '[0-9]+\.[0-9]+', 0) AS ip;

前三个

SELECT regexp_extract('156.154.161.94', '[0-9]+\.[0-9]+\.[0-9]+', 0) AS ip;

答案 1 :(得分:0)

更短的正则表达式:

SELECT regexp_extract('156.154.161.94', '\\d+\\.\\d+', 0) AS ip; --first 2 quibbles.

请注意,在Hive中转义的正确的正则表达式特殊字符是两个斜杠:\\.不是一个\.,不是\d