配置单元中的input.regex

inkz8wg9  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(484)

前面针对给定的数据集提出了一个问题。

03-24-2014  fm506   TOTAL-PROCESS   OK;HARD;1;PROCS OK: 717 processes
03-24-2014  fm504   CHECK-LOAD  OK;SOFT;2;OK - load average: 54.61, 56.95

该线程中提供的输入regex根本不起作用,因此我创建了两个“input regex”,并在中测试了第一个regexhttp://www.regexplanet.com/advanced/java/index.html". 这两组人都很完美。但当我在Hive中尝试时,它只加载空值。
输入regex i,如下所示

([^ ]*)\t+([^ ]*)\t+([^ ]*)\t+([^ ]*)

我的第二个输入regex是

^(\\S+)\\t+(\\S+)\\t+(\\S+)\\t+(\\S+)$

我认为它会工作,但它也没有加载空值。
你能告诉我这两个输入regex有什么问题吗?

50few1ms

50few1ms1#

第一个模式与整个字符串不匹配,字段匹配的部分是 [^ ]* ,即除空格以外的任何0+字符,因此最后一个字段无法匹配(它包含空格)。
第二个正则表达式还包含 \S+ 模式匹配除空白以外的一个或多个字符,并且最后一个字符与最后一个字段不匹配。
你可以用

^(\S+)\t+(\S+)\t+(\S+)\t+(.+)
^([^\t]*)\t+([^\t]*)\t+([^\t]*)\t+(.*)

查看regex演示
这个 [^\t]* 匹配制表符分隔文本中的任何字段,因为它与制表符以外的零个或多个字符匹配。

相关问题