我正在触发一个事件,该事件将事件标签发送为“{{YouTube视频名称}}-{{视频URL}}”,并且正在尝试清理Data Studio报告以删除重复项。这是我要清理的三个字符串结构(合并),第一个示例是主要的结构,也是所需的结果。
影片名称-https://www.youtube.com/watch?v=BHdX7wjVZuoI
影片名称-https://www.youtube.com/watch?v=BHdX7wjVZuoI&ebc=ANyPxKrWfYNNVhpt95KfvUrpVQmzotu0CtDxIhnZlW3WyfXfnilceZ6cSW3JbSrVFvNH2T5sO8tyf0PEhdFeSh7waKYfyZEgcg
影片名称-https://www.youtube.com/watch?t=1&v=BHdX7wjVZuoI
REGEXP_REPLACE(Event Label,'(.*youtube\\.com/watch\\?v=[^\\&]*)\\&(.*)','\\1')
REGEXP_REPLACE(Event Label,'(.*youtube\\.com/watch\\?)(t=[0-9]*\\&)?(v=[^\\&]*)\\&(.*)','\\1\\3')
REGEXP_REPLACE都适用于前两个示例,并删除“&ebc =“之后的所有内容。
我似乎无法使用的是第三个视频网址示例,并删除了中间部分。在上面的示例代码中,这是“t = 1&”。我尝试删除的所有网址字符串都具有相同的格式:
“t =”(一个或多个数字)“&”。
我尝试了第二个代码,在其中添加了
(t=[0-9]*\\&)?
,但这些视频网址未被捕获,并且仍显示为单独的事件标签(网址)。任何帮助表示赞赏。
最佳答案
这个 REGEXP_REPLACE
Calculated Field可以解决这个问题:
REGEXP_REPLACE(Event Label, '^(.*youtube\\.com/watch\\?).*(v=[^\\&]*).*', '\\1\\2')
简要说明:
*
在出现0次或更多次且与该字符或与之相邻的组关联时与该字符匹配。 =*
查找0次或多次出现=
。 [^\\&]*
匹配0个或多个匹配项或除&
之外的任何字符,因此(v=[^\\&]*)
提取v=
以及第一次出现&
之前的所有字符。 .*
还将提取任何字符0次或更多次。 Google Data Studio Report详细说明:
关于regex - REGEXP_REPLACE Data Studio中的YouTube视频URL清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61544819/