Sql 配置单元正则表达式-仅需要字符串的一部分

Sql 配置单元正则表达式-仅需要字符串的一部分,sql,regex,hive,Sql,Regex,Hive,您好,我试图从配置单元表中的一列中提取部分数据,但字符的位置不在一个位置 select value4,regexp_extract(value4,'*****',0) from hive_table; 列值如下所示 grade:data:home made;Cat;dinnerbox_grade_Enroll list:date:may;animal;dinnerbox_list_value cgrade:made_data;dinnerbox_cgrade_notEnroll 我要从餐盒一

您好,我试图从配置单元表中的一列中提取部分数据,但字符的位置不在一个位置

select value4,regexp_extract(value4,'*****',0) from hive_table;
列值如下所示

grade:data:home made;Cat;dinnerbox_grade_Enroll
list:date:may;animal;dinnerbox_list_value
cgrade:made_data;dinnerbox_cgrade_notEnroll
我要从餐盒一直到最后的数据


有人能帮上忙吗?

这是一个非常简单的正则表达式

.*dinnerbox(.*?)$
使用一个非贪婪的通配符,但将其强制到行的末尾,可以确保始终在末尾获得晚餐盒

您想要捕获组1

要摆脱
您可以使用

.*dinnerbox_(.*?)$

谢谢你,贝利,这很有帮助:)。还有一个问题,如果我想从dinnerbox\u anytext中选择部分数据…例如:dinnerbox\u等级、dinnerbox\u列表、dinnerbox\u CGrade您是在问如何摆脱
\ucode>,或者如何从输入中的任何位置而不是结尾获取
anytext
?我想要一个输出,例如:dinnerbox\u等级、dinnerbox\u列表、dinnerbox\u cgrade。只有部分数据在值结束时才完成。dinnerbox\u AnyString是否要反规范化sql行?否。我已接近解决方案-从表中运行select regexp\u extract(colname,.*dinnerbox(.*?$),1)后,我看到的输出为grade\u Enroll、list\u value、cgrade\u notEnroll,但我只需要grade、list、cgrade。我想将输出限制到列值的末尾