3

我正在尝试过滤用户名中的所有 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 地址。知道如何解决吗?

4

1 回答 1

4

您需要额外的反斜杠来转义特殊字符,例如 . 或\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 <> "";
于 2013-08-18T04:29:56.743 回答