regex - 在 Hive 中处理正则表达式中的多个匹配项

标签 regex hadoop hive

我想在 Hive 的表达式中解析负十进制值,我编写了以下正则表达式,

select regexp_extract("abcsdfghj-117.3700631&poikse-118.244&",
'([-][1-9][0-9]*[.][0-9]+)&*') as output

虽然正则表达式似乎运行良好,但它只给出了它的第一个匹配项。是否可以让配置单元给出所有可能的组合? hive 中是否有任何函数可以返回所有匹配项?

我用谷歌搜索了这个,但没有找到任何答案。任何帮助将不胜感激

谢谢

最佳答案

  1. 将每个 {prefix}{number}& 替换为 ,{number}
  2. 从第二个字符中删除结果(删除第一个 ,)
  3. 通过,将结果拆分为数组

hive> select split(substr(regexp_replace("abcsdfghj-117.3700631&poikse-118.244&",'.*?(-\\d+\\.\\d+)&',',$1'),2),',') as output;
OK
["-117.3700631","-118.244"]

关于regex - 在 Hive 中处理正则表达式中的多个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42125647/

相关文章:

java - 如何使用 Java 将字符串中的多个单词替换为空格

scala - Spark 在大型洗牌作业上失败,出现 java.io.IOException : Filesystem closed

hadoop - 用于日志的 Snappy 或 LZO,然后由 hadoop 使用

sql - Hive DateTime 截断器(QUARTER、WEEK、DAYOFWEEK)?

apache-spark - 从命令行配置Hortonworks Data Platform Sandbox 2.6.5

javascript - 修改现有的正则表达式以适应用空格替换 <nbsp;>

c# - 在连续大写字母序列的最后一个之前添加一个空格的正则表达式

Python正则表达式与unicode字符错误?

hadoop - hbase 0.90.5 未使用 hadoop 1.0 在分布式模式下启动

hadoop - 将 LD_PRELOAD 与 Apache Spark(或 YARN)结合使用