У меня есть электронная таблица Google со списком URL с таким общим шаблоном: https://example.com/form?utm_source=facebook&utm_medium=banner&utm_content=test&utm_campaign=test
Я хочу извлечь значение параметра utm_content ( test ) в отдельную ячейку. Я мог бы использовать несколько сплитов, но мне нужно только значение этого конкретного.
Попытался сделать несколько трюков с комбинацией SEARCH и LEFT, RIGHT или MID, но не смог сделать это правильно. Я думаю, что REGEXEXTRACT должен работать, но не знаете с чего начать.
Есть какие-нибудь идеи о том, как регулярное выражение должно go здесь, в листах Google? Спасибо.
Не используйте REGEXEXTRACT. Это работает, но без поддержки lookbehinds, после извлечения будет некоторая переделка.
Вместо этого используйте REGEXREPLACE.
=REGEXREPLACE(<source text>, ".*?[&?]utm_content=(.*?)(&.*|$)", "$1")
Подробности:
.*?
[&?]
&
?
utm_content=
(.*?)
(&.*|$)
$1
Кроме того, вы также можете попробовать (предполагая URL в A2)
=regexextract(A2, "utm_content=(.+)&")
или, чтобы обработать весь столбец (предполагая URL в столбце A)
=Arrayformula(if(len(A2:A), regexextract(A2:A, "utm_content=(.+)&"),))
Используйте lookarounds. (?<=) ищет определенное значение раньше, (?=) ищет определенное значение после, [^&]*? совмещает все между ними двумя. Это должно работать для вас:
(?<=)
(?=)
[^&]*?
(?<=utm_content=)[^&]*?(?=&|$)
демо https://regex101.com/r/NY5mn1/3/