Объедините REGEXREPLACE и CONCAT в одну формулу в Google Sheets - PullRequest
0 голосов
/ 28 мая 2018

У меня есть две формулы, которые мне нужно объединить в одну.Но я получаю ошибку вычисления: " Неверное количество аргументов для IF. Ожидается от 2 до 3 аргументов, но получено 4 аргумента. "

ВотПервая формула

=REGEXREPLACE(A4, "(/[^/]+)(?:/\?[^/]*)?$", "$1/")

Вот вторая формула

=ARRAYFORMULA(IF(ISBLANK(B2:B),"",(CONCAT(B2:B,"?tag=ukos-20"))))

Вот моя попытка

=ARRAYFORMULA(IF(ISBLANK(B2:B),"",(REGEXREPLACE(B2:B, "(/[^/]+)(?:/\?[^/]*)?$", "$1/")),(CONCAT(B2:B,"?tag=ukos-20"))))

Ниже приведен пример в Google Sheet, который при необходимости можно скопировать с помощью File-> Make a Copy.

Таким образом, мы выполняем регулярное выражение для строк и затем передаем этот результат в concat, который добавляеттег к URL.

1 Ответ

0 голосов
/ 04 июня 2018

Здесь вы хотите поддерживать оба типа ?key=value и ref=value, так что ваше текущее регулярное выражение не поможет.

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

=ARRAYFORMULA(IF(ISBLANK(B2:B),"",CONCAT(REGEXREPLACE(B2:B, "(/[^/]+)(?:/(?:\?|ref=)[^/]*)?$", "$1/"),"?tag=ukos-20")))

Обратите внимание на этоудалит строку запроса и строку reg=... в конце URL-адресов и добавит жестко закодированный.

Регулярное выражение соответствует

  • (/[^/]+) - / изатем 1+ символов, отличных от /, и поместили результат в группу 1
  • (?:/(?:\?|ref=)[^/]*)? - необязательное совпадение группы (соответствует 1 или 0 раз):
    • / - a /
    • (?:\?|ref=) - ? или ref=
    • [^/]* - 0+ символов, отличных от /
  • $ - конец строки.

$1/ заменит содержимое группы 1 и добавит /.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...