使用 MySQL/Presto 提取给定开始和结束模式的字符串

Posted

技术标签:

【中文标题】使用 MySQL/Presto 提取给定开始和结束模式的字符串【英文标题】:Extracting out a string given a starting and ending pattern using MySQL/Presto 【发布时间】:2019-11-21 15:33:03 【问题描述】:

尝试从给定特定开始和结束模式的字符串中提取文本。

真的不知道从哪里开始。我环顾四周,试图理解正则表达式函数,但它们超出了我的想象。

表:

+----+------------------------------------+
| id |              sentence              |
+----+------------------------------------+
|  1 | Hello, I am a bird.                |
|  2 | Hello, I am a cat. I like catfood. |
|  3 | Hello, I am a dog. I like bones.   |
+----+------------------------------------+

试图提取Hello,.之间的文本

输出:

+-------------+
|  sentence   |
+-------------+
| I am a bird |
| I am a cat  |
| I am a dog  |
+-------------+

【问题讨论】:

【参考方案1】:

尝试在 hive 中使用 regexp_extract(col,regexp,capture_group) 函数:

Hello,    //match "Hello," literal
([^.]*)  //then until first occurrence of .(period) capture as first group

示例:

hive> select regexp_extract(sentence,"Hello,([^.]*)",1)sentence from( 
          --preparing sample data
           select stack(3,'Hello, I am a bird.','Hello, I am a cat. I like catfood.','Hello, I am a dog. I like bones.')
              as(sentence))t;

结果:

sentence
 I am a bird
 I am a cat
 I am a dog

【讨论】:

效果很好!谢谢。

以上是关于使用 MySQL/Presto 提取给定开始和结束模式的字符串的主要内容,如果未能解决你的问题,请参考以下文章

给定具有开始和结束时间的事件,如何使用 Spark 计算同时发生的事件数?

获取给定周年、给定月份和给定周的开始和结束日期

从给定的开始日期获取结束日期基数

日期区间正则表达式生成模块

给定开始和结束索引,如何在 C 中复制字符串的一部分?

在php中获取给定月份和年份的开始和结束unix时间戳