Regex 用单词边界搜索子字符串的配置单元

Regex 用单词边界搜索子字符串的配置单元,regex,string,word,hive,boundary,java,Regex,String,Word,Hive,Boundary,Java,我正在使用Hive,并且有一个字符串数据库。我想要带有特定单词的行,但需要单词边界(如果我正在搜索“transport”,我不想要带有“transporter”的行)。我该怎么做 目前,我正在做如下工作: 配置单元>从myTable中选择*,其中(长度(regexp_extract(column1,'transport',0))>0) 但很明显,这并没有包含任何单词边界 提前谢谢 我知道在兼容POSIX的正则表达式中,单词边界是这样的:[[::]: [[:<:]]transport[[:&

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

目前,我正在做如下工作:

配置单元>从myTable中选择*,其中(长度(regexp_extract(column1,'transport',0))>0)

但很明显,这并没有包含任何单词边界


提前谢谢

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

[[:<:]]transport[[:>:]]
[[::]]
但是,我不知道hiveQL是否支持它。

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

regexp_extract(column1, '\btransport\b')

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

[[::]]工作,但仅适用于其中没有其他单词的字符串(出于某些或其他原因)。不过我发现了一些有用的方法,因为每个单词的右边都有空格或“”作为边框,所以我选择了:hive>select*from-myTable where(column1 regexp'(*)[|@user3005925:您是否尝试过
select*from-myTable where-column1 regexp'[[:]]“;
?因为奇怪的是,您必须通过在前后添加一些
(.*)
来描述所有字符串!