配置单元中的input.regex



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

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

该线程中提供的输入正则表达式根本不起作用,因此我创建了两个"正则表达式";输入正则表达式";并在";http://www.regexplanet.com/advanced/java/index.html"。小组是完美的。但当我在Hive中尝试时,它只加载NULL值。

我提供的输入正则表达式如下

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

我的第二个输入正则表达式是

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

我认为它会起作用,但它也不会加载NULL值。

你能告诉我这两个输入正则表达式出了什么问题吗?

您的第一个模式与整个字符串不匹配,字段匹配部分为[^ ]*,即除空格之外的任何0+个字符,因此无法匹配最后一个字段(它包含空格(。

第二个正则表达式还包含与1个或多个字符(空白字符除外(匹配的S+模式,最后一个正则表达式与最后一个字段不匹配。

您可以使用

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

查看regex演示

[^t]*匹配制表符分隔文本中的任何字段,因为它匹配制表符以外的零个或多个字符。

最新更新