gpt4 book ai didi

regex - 使用 hive 在特定单词之前提取文本

转载 作者:行者123 更新时间:2023-12-02 21:58:44 26 4
gpt4 key购买 nike

我在如下所示的列中有数据:

  • Avenue 1 HE1 345 HOUSE 123.
  • FLAT 202 HRE2 D34 HOUSE345。
  • DOOR 324 HA1 345 HOUSE 67

  • 5,

    在所有情况下,我都需要提取始终位于6-7个字符之间的邮政编码。 HOUSE之前,邮政编码之间和邮政编码之前的空白之间始终存在空白。

    所需输出:
  • HE1 345
  • HRE2 D34
  • HA1 345

  • 我试过两次使用substring_index只是为了知道 hive 不支持该功能。我是Hive的新手。帮助和对 Material 的任何引用也将是一个很好的姿态。

    提前致谢。

    最佳答案

    您可以使用此正则表达式模式' (\\w+ \\w+) HOUSE'。这意味着一个空格,一个或多个单词字符,一个空格,一个或多个字符,一个空格,HOUSE。括号中是要提取的组。群组索引为1。

    演示:

     select regexp_extract(s,' (\\w+ \\w+) HOUSE',1) 
    from
    (select 'Avenue 1 HE1 345 HOUSE 123.' s union all
    select 'FLAT 202 HRE2 D34 HOUSE 345.' s union all
    select 'DOOR 324 HA1 345 HOUSE 67' s) s;
    OK
    HE1 345
    HRE2 D34
    HA1 345
    Time taken: 26.472 seconds, Fetched: 3 row(s)

    对于不区分大小写的应用程序,请使用(?i)修饰符:
    hive>
    >
    > select regexp_extract(s,' (\\w+ \\w+) (?i)HOUSE',1)
    > from
    > (select 'Avenue 1 HE1 345 HOUSe 123.' s union all
    > select 'FLAT 202 HRE2 D34 HOUsE 345.' s union all
    > select 'DOOR 324 HA1 345 HOuSE 67' s) s;
    OK
    HE1 345
    HRE2 D34
    HA1 345

    在此处查看正则表达式文档: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

    关于不区分大小写: http://www.regular-expressions.info/modifiers.html

    关于regex - 使用 hive 在特定单词之前提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46110153/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com