我有一个Hive表,列Col1
包含这种格式的字符串:
sip: 3334445678 @ 10.10.0.134
现在,我想使用以下方法提取电话号码部分:
SELECT regexp_extract(Col1,'\D{10}',0) FROM Table;
据我了解,\D{10}
寻找十个连续数字的模式。但是,当我运行脚本时,我得到空值和空行。我在这里缺少什么?
另外,我确实需要使用模式匹配,因为有些记录只显示电话号码;这会遗漏substr
作为潜在选项。
答案 0 :(得分:2)
这应该有效:
select regexp_extract('3334445678 @ 10.10.0.134', '[0-9]{10}',0) from table limit 1;
3334445678
我不确定为什么你使用的语法不起作用。可能是因为Hive的RE引擎不支持PCRE。
答案 1 :(得分:1)
试试这个:
select regexp_extract('3334445678 @ 10.10.0.134','\\d{10}',0) from test limit 1;