我的记录如下:
0x0
我正在搜索一个正则表达式,我可以将前3个char 000110PPPP111KZY0
拆分为hive表中的一个字段,其余{{1}}放入第二个字段,依此类推固定长度文件,没有分隔符
答案 0 :(得分:1)
我没有使用过hadoop或hive的经验,但是以下的正则表达式将与我相信你正在寻找的东西一起使用。
/(\dx\d)(.*)/
这将捕获/分割0x0
到第一个捕获组,然后将所有内容捕获到第二个捕获组。如果您只想要0x0号码后面的数字/字母(所以没有H123456789
或尾随的单词和字母),请使用/(\dx\d)([^ ]*)/
如果我误解了您正在寻找的内容,您是否可以澄清您提供的代码的确切部分,以便您选择和/或捕获?谢谢!
答案 1 :(得分:0)
OrderId | ProductId | Amount
----------------------------
1 | 1 | 2
1 | 7 | 1
1 | 2 | 5
4 | 4 | 3
4 | 1 | 2
8 | 4 | 1
8 | 9 | 2
此代码返回一个包含两个字段的Hive行:
Select
regexp_extract(data, '^(\\dx\\d).*', 1),
regexp_extract(data, '^\\dx\\d(.*)', 1)
from (Select '0x0000110PPPP111KZY0 ' as data) a;