需要使用正则表达式来提取字符串的一部分

Need to use regex to extract a part of a string

我是正则表达式菜鸟,正试图在 Data Studio 中使用 regexp_extract() 函数来提取字符串的一部分。你能帮帮我吗?

我需要提取 'May' 之后的字符串部分。 'May' 之前的所有内容在所有广告系列中都完全相同。

我尝试用谷歌搜索解决方案并在 regexer.com 上浪费了很多时间,但我无法弄清楚

Current Campaign Name:                       
Xxxxx_xxxxx_PKN_Trueview_24th MayComedy Movie Fans18-24 
Xxxxx_xxxxx_PKN_Trueview_24th MaySouth Asian Film Fans18-24 
Xxxxx_xxxxx_PKN_Trueview_24th MayCricket Enthusiasts18-24   
Xxxxx_xxxxx_PKN_Trueview_24th MayMotorcycle Enthusiasts18-24    

Expected Campaign Names:
Comedy Movie Fans18-24
South Asian Film Fans18-24
Cricket Enthusiasts18-24
Motorcycle Enthusiasts18-24

编辑:我试图在数据工作室的 REGEXP_EXTRACT(Campaign,"regex_code_here") 函数中使用它。我认为可接受的语法是 re2.

你需要的正则表达式是这样的:

(?<=May).*$

测试一下here

您可以使用替换

  • ^.*?May - 匹配所有 up-to 第一次出现的 May

  • "$`" - 替换为子字符串 Ref 之后的部分

    let arr = ["Xxxxx_xxxxx_PKN_Trueview_24th MayComedy Movie Fans18-24","Xxxxx_xxxxx_PKN_Trueview_24th MaySouth Asian Film Fans18-24","Xxxxx_xxxxx_PKN_Trueview_24th MayCricket Enthusiasts18-24","Xxxxx_xxxxx_PKN_Trueview_24th MayMotorcycle Enthusiasts18-24"]
    
    let op = arr.map(str=> str.replace(/^.*?May/g, "$`"))
    
    console.log(op)
    

您实际上可以在此处使用 REGEXP_REPLACE 来删除之前的所有内容,包括 May:

REGEXP_REPLACE(Campaign, '.*May', '')

参见regex demo