Regex 括号中的配置单元正则表达式rlike错误

Regex 括号中的配置单元正则表达式rlike错误,regex,hive,Regex,Hive,我正在尝试搜索一个后跟(.1)的关键字。查询的形式为: select * from <tablename> where colname rlike 'somename\('; select*从其中colname像'somename\('; 因为(是一个元字符,所以我对其进行了转义。但是,在处理与未关闭组相关的上述正则表达式时,hive抛出了一个错误。如何匹配hive正则表达式中的“(”?您可以将其加倍: select * from <tablename> where

我正在尝试搜索一个后跟(.1)的关键字。查询的形式为:

select * from <tablename> where colname rlike 'somename\(';
select*从其中colname像'somename\(';

因为(是一个元字符,所以我对其进行了转义。但是,在处理与未关闭组相关的上述正则表达式时,hive抛出了一个错误。如何匹配hive正则表达式中的“(”?

您可以将其加倍:

select * from <tablename> where colname RLIKE 'somename\\(';
                                        ^^^^^          ^^
select*从其中colname像'somename\\(';
^^^^^          ^^
或者在字符类中使用它:

select * from <tablename> where colname RLIKE 'somename[(]';
                                        ^^^^^          ^^^
select*从中选择colname RLIKE'somename[(]”;
^^^^^          ^^^

否则,
\(
被解析为一个文本
),并被视为一个打开组正则表达式操作符,需要关闭
对应项。

双重转义
从其中选择*像'somename'\\(“;
感谢您的快速回复。我尝试了double\方法,但仍然得到相同的错误-“java.util.regex.PatternSyntaxException:Unclosed group near index…”我的查询在终端处如下所示:$hive-e“从tblname.dbname中选择col1,col2,其中col3类似于'somename\\('”可能您想使用
RLIKE
?抱歉,输入错误。它类似于RLIKE。Hive使用Java正则表达式风格,正则表达式模式的定义方式相同。这应该有效。使用字符类的第二个建议有效。谢谢。