hive正则表达式将字符串拆分为两个不同的字段

clj7thdc  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(555)

我的记录是这样的:

0x0000110PPPP111KZY0 H123456789 XYZ 000000000000000000607532030000607532000060753203002014101707199999

我正在寻找一个正则表达式,我可以分裂前3个字符 0x0 在Hive表中的一个字段中 000110PPPP111KZY0 在对定长文件和无分隔符等第二字段中。

pnwntuvh

pnwntuvh1#

Select 
  regexp_extract(data, '^(\\dx\\d).*', 1), 
  regexp_extract(data, '^\\dx\\d(.*)', 1) 
from (Select '0x0000110PPPP111KZY0 ' as data) a;

此代码返回一个包含两个字段的配置单元行:

0x0 000110PPPP111KZY0
mklgxw1f

mklgxw1f2#

我没有使用hadoop或hive的经验,但是下面的正则表达式将与我相信你正在寻找的东西一起工作。 /(\dx\d)(.*)/ 这将捕获/分割 0x0 进入第一个捕获组,之后的所有内容进入第二个捕获组。如果只希望数字/字母跟在0x0数字后面(因此 H123456789 或尾随词和字母),使用 /(\dx\d)([^ ]*)/ 如果我误解了你想要的是什么,你能澄清一下你提供的代码中你想要选择和/或捕获的部分吗?谢谢!

相关问题