首页 > 解决方案 > 将 REGEXREPLACE 和 CONCAT 合并到 Google 表格中的相同公式中

问题描述

我有两个公式需要合并为一个。但我收到一个计算错误:“ 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 表格中的示例,如果需要,可以使用File-> Make a Copy.

所以我们在行上执行正则表达式,然后将结果传递给 concat,concat 将标签附加到 URL。

标签: javascriptregexexcelgoogle-sheetsconcatenation

解决方案


在这里,您希望同时支持结尾?key=valueref=value结尾类型,因此您当前的正则表达式将无济于事。

您可以使用

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

请注意,这将删除查询字符串和reg=...URL 末尾的字符串,并附加硬编码的字符串。

正则表达式匹配

  • (/[^/]+)- a /,然后是 1+ 个字符,而不是/将结果放入第 1 组
  • (?:/(?:\?|ref=)[^/]*)?- 一个可选组(匹配 1 或 0 次)匹配:
    • /- 一个/
    • (?:\?|ref=)-?要么ref=
    • [^/]*- 0+ 以外的字符/
  • $- 字符串结束。

$1/替换为第 1 组的内容并将附加/.


推荐阅读