使用regexp_extract()从呼叫日志中提取电话号码

时间:2014-08-21 05:30:33

标签: hive hiveql

我有一个Hive表,列Col1包含这种格式的字符串:

sip: 3334445678 @ 10.10.0.134

现在,我想使用以下方法提取电话号码部分:

SELECT regexp_extract(Col1,'\D{10}',0) FROM Table;

据我了解,\D{10}寻找十个连续数字的模式。但是,当我运行脚本时,我得到空值和空行。我在这里缺少什么?

另外,我确实需要使用模式匹配,因为有些记录只显示电话号码;这会遗漏substr作为潜在选项。

2 个答案:

答案 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;