Hive:使用正则表达式拆分字符串
Hive: split string using regex
我有一串 ::
分隔的单词。如何使用 Hive
UDF
regexp_extract()
从字符串中提取单词?
regexp_extract('2foa1fa::12hjk','^(\w.*)\:{2}(\w.*)$',1) as word1
输出:2foa1fa
regexp_extract('2foa1fa::12hjk','^(\w.*)\:{2}(\w.*)$',2) as word2
输出:12hjk
- ^ 锚定到字符串的开头
- \\w 查找单词字符,.* 表示任意次数
- \\:{2} 在一行中查找两个 :(这是您的 :: 分隔符)
- $ 将字符串锚定到字符串的末尾
- 在regexp_extract中指定第三个参数提取索引(模式)
现在只需将您的列名放在字符串文字的位置,您就可以开始了。
您还可以使用拆分函数创建一个数组,然后通过数组位置进行查询。看起来像这样:
select my_array[2] from
(select split('2foa1fa::12hjk','\::') as my_array from my_table) b;
输出:12hjk
我有一串 ::
分隔的单词。如何使用 Hive
UDF
regexp_extract()
从字符串中提取单词?
regexp_extract('2foa1fa::12hjk','^(\w.*)\:{2}(\w.*)$',1) as word1
输出:2foa1fa
regexp_extract('2foa1fa::12hjk','^(\w.*)\:{2}(\w.*)$',2) as word2
输出:12hjk
- ^ 锚定到字符串的开头
- \\w 查找单词字符,.* 表示任意次数
- \\:{2} 在一行中查找两个 :(这是您的 :: 分隔符)
- $ 将字符串锚定到字符串的末尾
- 在regexp_extract中指定第三个参数提取索引(模式)
现在只需将您的列名放在字符串文字的位置,您就可以开始了。
您还可以使用拆分函数创建一个数组,然后通过数组位置进行查询。看起来像这样:
select my_array[2] from
(select split('2foa1fa::12hjk','\::') as my_array from my_table) b;
输出:12hjk