蜂巢字符串提取

问题描述

我有一列,其值类似于https://ysd.com/ert490ghlkh/gsum

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

我尝试过

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

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

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

解决方法

您可以使用

data = {'Sample':['S1','S1','S2','S3','S4','Negative','Positive','Negative'],'Location':['A1','A2','A3','A4','A5','A6','A7','A8','A9','A10','A11','A12','B1','B2','B3','B4','B5','B6','B7','B8','B9','B10','B11','B12'],'Repeat Number':['1','2','3','4','1',]}
df1 = pd.DataFrame(data)
df1

请参见regex demo

详细信息

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

在斜线之间提取组:

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

结果:

ert490ghlkh