regexp_replace 配置单元中的正则表达式

regular expression in regexp_replace hive

我的 table 中有几行。这行看起来像:

Atribute       |
---------------|
B=10;MB=12;A=33|
---------------|
MB=16;B=12;A=23|
---------------|
A=10;MB=23;B=58|

等等

我只需要在 'B=' 之后获取数字。对于那个例子,我应该得到:

10
12
58

为了得到这个结果,我应该写什么 select 查询? (查询不应与 'MB=' 和 'B=' 混淆)

hive> select regexp_extract('B=10\;AB=12\;B=33', '(\;|^)B=([0-9]*)', 2);
    OK
    10
    Time taken: 0.157 seconds, Fetched: 1 row(s)
    hive> select regexp_extract('MB=16\;B=12\;A=23', '(\;|^)B=([0-9]*)', 2);
    OK
    12
    Time taken: 0.11 seconds, Fetched: 1 row(s)
    hive> select regexp_extract('A=10\;MB=23\;B=58', '(\;|^)B=([0-9]*)', 2);
    OK
    58
    Time taken: 0.134 seconds, Fetched: 1 row(s)
    hive>

第一组将尝试匹配值为 'B' 的字符串开头或后面跟有值 'B' 的字符串的分号。