javascript - 将 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。
解决方案
在这里,您希望同时支持结尾?key=value
和ref=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 组的内容并将附加/
.
推荐阅读
- ruby-on-rails - 如何在 Ruby on Rails 中使用 PostgreSQL JSON 数组查询 ActiveRecord::Relation
- .htaccess - timthumb.php 和 htaccess 规则
- amazon-web-services - 检查 CloudFormation 是否已部署 AWS 资源
- reactjs - 从字段输入访问变异器
- r - 检查 R igraph 中节点之间的连通性时的时间复杂度问题
- php - 将多维数组字符串转换为数组
- pytorch - 从 pytorch 的原点缩小或增长张量?
- javascript - 无法在 ReactJS 中渲染嵌套地图
- django - 如何解决:以 10 为底的 int() 的值错误无效文字:'Shuk'?
- r - 当矢量化不可行时,迭代数据帧中的行的 tidyverse 方法是什么?