Hive搜索带有字边界的子字符串

时间:2013-11-18 18:52:59

标签: regex string word hive boundary

我正在使用Hive,并拥有一个字符串数据库。我想要具有特定单词的行,但需要单词边界(如果我正在搜索“transport”,我不想要一个带有“transporter”的行)。我该怎么做?

目前,我正在执行以下操作:

蜂房> select * from myTable where(length(regexp_extract(column1,'transport',0))> 0);

但显然这并没有包含任何单词边界。

提前致谢!

2 个答案:

答案 0 :(得分:2)

Hive使用正则表达式语法。您可以尝试以下方法。

regexp_extract(column1, '\btransport\b')

如果失败,请尝试双重转义单词边界\\b

答案 1 :(得分:1)

我知道在POSIX兼容的正则表达式中,字边界是这样的:[[:<:]][[:>:]]

[[:<:]]transport[[:>:]]

但是,我不知道hiveQL是否支持它。