首页 > 解决方案 > 蜂巢字符串提取

问题描述

我有一列具有类似https://ysd.com/ert490ghlkh/gsum的值

我想获取 aftercom/和 before的所有字符/gsum。事先,我知道在 .com/ 之后要获取多少个字符。就像我知道 11 个字符必须在.com.

我试过了

REGEXP_REPLACE(REGEXP_REPLACE(column1, 'https://ysd.com/', ''), '/gsum', '')

这似乎并不理想,因为最后一部分/gsum可能会有所不同。在这种情况下,我必须编写不等于唯一最后一部分的 case 语句。

谁能说如何在特定子字符串之后获取任何字符?

标签: regexstringhivehiveql

解决方案


您可以使用

REGEXP_REPLACE(column1, 'https://ysd\\.com/([^/]+).*', '\\1')

查看正则表达式演示

细节

  • https://ysd\\.com/- 一个https://ysd.com/字符串
  • ([^/]+)- 第 1 组(\1是对替换模式中使用的组值的反向引用):除此之外的任何一个或多个字符/
  • .*- 尽可能多的除换行符以外的任何 0 个或多个字符。

推荐阅读