将 REGEXREPLACE 和 CONCAT 合并到谷歌表格中的相同公式中



我有两个公式需要组合成一个。但是我得到一个计算错误:">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,后者将标签附加到 URL。

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

您可以使用

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

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

正则表达式匹配

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

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

最新更新