配置单元字符串提取

2lpgd968  于 2021-06-24  发布在  Hive
关注(0)|答案(2)|浏览(239)

我有一个列,它的值如下https://ysd.com/ert490ghlkh/gsum
我想把所有的人物都带回来 com/ 在那之前 /gsum . 事先,我知道在.com/之后要提取多少个字符。就像我知道11个字符必须在 .com .
我试过了

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

似乎不太理想,因为最后一部分 /gsum 可能会有所不同。在这种情况下,我必须写不的情况下,这是等于唯一的最后一部分语句。
有人能说出如何在一个特定的子字符串之后不提取任何字符吗?

5hcedyr0

5hcedyr01#

你可以用

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

查看regex演示
细节 https://ysd\\.com/ -a https://ysd.com/ 一串 ([^/]+) -第1组( \1 是对替换模式中使用的组值的反向引用):除
/ .* -除换行符以外的任何0个或更多字符,尽可能多。

lf5gs5x2

lf5gs5x22#

在斜线之间提取组:

select REGEXP_REPLACE('https://ysd.com/ert490ghlkh/gsum', '.*/(.*)/.*', '$1')

结果:

ert490ghlkh

相关问题