hive与正则表达式

i86rm4rw  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(535)

我正在尝试过滤用户名中的所有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地址。你知道怎么修吗?

nxowjjhe

nxowjjhe1#

你需要额外的反斜杠来转义像这样的特殊字符。或\s。维基上有更多信息https://cwiki.apache.org/confluence/display/hive/languagemanual+udf
尝试以下操作:

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 <> "";

相关问题