问题描述
我有一列,其值类似于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