如何仅使用 Hive 中的 regexp_extract 函数提取标点符号

Posted

技术标签:

【中文标题】如何仅使用 Hive 中的 regexp_extract 函数提取标点符号【英文标题】:How to extract punctuations only using regexp_extract function in Hive 【发布时间】:2017-08-06 14:28:14 【问题描述】:

我在 hive 中学习 regexp_extract 函数假设我有表 'A' 和列 'word',

A word Hello! world, how are you?

我只想提取标点符号,以便输出是,

! , ?

如何使用 regexp_extract 执行此操作我尝试如下但没有得到所需的输出,

select regexp_extract(word,"[^A-Za-z0-9]*","1") from A;

请指导!

【问题讨论】:

强制解决方案(“如何使用 regexp_extract”)不是一个好主意。 【参考方案1】:
hive> with A as (select explode(array('word','Hello!','world,','how','are','you?')) as word)
    > select  regexp_extract(word,'\\pPunct',0) as Punct
    > from    A
    > ;
OK
punct

!
,


?

【讨论】:

嘿嘟嘟你又来了,我的问题解决了。谢谢! Dudu,您能否推荐任何简单的文档或网站,我可以根据要求了解使用哪种正则表达式模式。 Hive 使用 Java 正则表达式 docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html P.s. (1) REGEXP_EXTRACT 的第三个参数是捕获组的索引(被括号包围的匹配模式的一部分)或整个模式的0(2) * 代表零个或多个,因此您的模式匹配零长度字符串。

以上是关于如何仅使用 Hive 中的 regexp_extract 函数提取标点符号的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有重复的情况下在 hive 中执行 LEFT OUTER JOIN 以仅检查右表中的一个值?

Azure Synapse 中的 Hive

hive外部表分区

MM 中的月份使用 Hive 中的 Month()

如何在代码运行后使 Hive 终端显示行(不仅仅是标题)?

Unix Shell 脚本作为 Pig 和 Hive 的 UDF