我正在尝试过滤用户名中的所有 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 地址。知道如何解决吗?
您需要额外的反斜杠来转义特殊字符,例如 . 或\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 <> "";