蜂巢和正则表达

时间:2013-08-17 13:39:10

标签: hadoop hive

我正在尝试过滤用户名中的所有IP地址。但是这在我的查询中并没有真正起作用:

select distinct regexp_extract(username, '^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$', 0) from ips. 

问题在于他甚至将数字识别为1000000作为ip地址。 知道怎么解决吗?

1 个答案:

答案 0 :(得分:3)

你需要额外的反斜杠来逃避像这样的特殊字符。或\ s。在https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

上有关于wiki的更多信息

尝试类似:

select
    distinct regexp_extract(ip, '^([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})$', 0) as match
from
    ips
having
    match <> "";