Hive的正则表达式与正常的正则表达式有什么不同?

时间:2016-12-13 12:27:56

标签: regex hadoop hive hiveql

我正在使用Hive来分析看起来像这样的网络日志

415503 - - [10/Jun/1998:00:48:00 +0000] "GET /english/images/nav_sitemap_off.gif HTTP/1.1" 200 416

我使用下面的正则表达式将其加载到工作正常的hive表

([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)

但如果我在https://www.regex101.com/中检查此正则表达式,则此正则表达式与我的字符串不匹配。

如果我删除块中的一些反斜杠

(-|\\[[^\\]]*\\]) 

它已经过验证。

我认为当我来到Hive中的正则表达式时,我们必须放置\来逃避字符串?但是如何在创建数据库之前验证这一点?

1 个答案:

答案 0 :(得分:1)

Hive使用Java正则表达式语法。请尝试http://www.fileformat.info/tool/regex.htm进行测试。

有关详细信息,请参阅Apache Hive - REGEXColumnSpecification

Test with your input