Необходимо использовать регулярное выражение для извлечения части строки

Я новичок в регулярных выражениях, который пытается использовать функцию regexp_extract () в студии данных для извлечения части строки. Не могли бы вы мне помочь?

Мне нужно извлечь часть строки, которая идет после May. Все, что было до мая, одинаково во всех кампаниях.

Я пробовал поискать решение в Google и убил много времени на 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.


person Abhay    schedule 07.06.2019    source источник
comment
Какой язык и движок регулярных выражений вы используете?   -  person Tim Biegeleisen    schedule 07.06.2019
comment
Что не так с /May(.+)$/?   -  person Tibrogargan    schedule 07.06.2019
comment
В зависимости от того, поддерживает ли ваш нераскрытый язык ретроспективный просмотр, это будет довольно просто: (?<=\bMay).+$   -  person K.Dᴀᴠɪs    schedule 07.06.2019
comment
Я использую студию данных google, так что это будет re2, и я предполагаю, что javascript   -  person Abhay    schedule 07.06.2019


Ответы (3)


Фактически вы можете использовать REGEXP_REPLACE здесь, чтобы удалить все предыдущие, включая May:

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

См. демонстрацию регулярных выражений:

введите описание изображения здесь

person Wiktor Stribiżew    schedule 07.06.2019
comment
Спасибо! Это именно то, что мне нужно :) - person Abhay; 07.06.2019

Вам нужно следующее регулярное выражение:

(?<=May).*$

Протестируйте его здесь.

person virolino    schedule 07.06.2019

Вы можете использовать замену

  • ^.*?May - Сопоставить все до первого появления May

  • "$`" - replace with portion that follows substring 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)

person Code Maniac    schedule 07.06.2019