配置单元提取<br/>之前的文本

时间:2019-01-21 10:10:30

标签: java regex hive

在Apache配置单元中,如何从给定字符串中提取子字符串。 我有一列包含以下值。

我需要从下面的字符串中提取ABC3170,即直到<br>

我的数据如下所示。我想获取所有记录并消除<BR>之后的文字
Col1
---------
G3333
XYZD20
5289
ABC2620
CDF-B700S
定制经理
ABC3170 <BR></DIV><DIV DIR="AUTO" STYLE="DIRECTION: LTR; MARGIN: 0; PADDING: 0; FONT-FAMILY: SANS-SE

1 个答案:

答案 0 :(得分:0)

使用Regexp_Extract函数并匹配Java regex以提取<BR>.之前的值

正则表达式:

(.*?)\\s+<BR> //capture without space until <BR>

配置单元查询:

hive> select regexp_extract(<column.name>,"(.*?)\\s+<BR>",1) from <db.name>.<tab.name>;

示例:

hive> select regexp_extract(txt,"(.*?)\\s+<BR>",1),txt from i;
+----------+---------------------------------------------------------------------------------------------------------------------------------------------+--+
|   _c0    |                                                                     txt                                                                     |
+----------+---------------------------------------------------------------------------------------------------------------------------------------------+--+
| ABC3170  | ABC3170 <BR></DIV><DIV DIR="AUTO" STYLE="DIRECTION: LTR; MARGIN: 0; PADDING: 0; FONT-FAMILY: SANS-SERIF; FONT-SIZE: 11PT; COLOR: BLACK; ">  |
+----------+---------------------------------------------------------------------------------------------------------------------------------------------+--+