【问题标题】:Couchbase N1QL - inline Regex captured group replace?Couchbase N1QL - 内联正则表达式捕获组替换?
【发布时间】:2020-10-09 01:36:49
【问题描述】:
UPDATE SOME_BUCKET as doc USE KEYS ["USER_ACCESS::123456::SOME_ROLE", "MORE KEYS HERE...", etc]
loc.id = REGEXP_REPLACE(loc.id, "(.*) - (.*)", "$1-$2") FOR loc IN locations END
RETURNING doc

在此处设置“loc.id”只是为其分配字符串替换值,“$1-$2” 而不是对捕获的组的反向引用

Couchbase Server 运行 GoLang 正则表达式语法,显然可能不支持反向引用?有什么选择?

【问题讨论】:

  • @Edward -- 谢谢,虽然我在 REGEXP_REPLACE 方法中得到了这一点,2nd + 3rd params。问题是如何在调用 REGEXP_REPLACE 方法时正确循环遍历嵌套数组...
  • 我现在看到了,对不起

标签: sql regex go couchbase n1ql


【解决方案1】:

更新所需的 SET、UNSET 子句https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/update.html#update-for 检查示例 3

UPDATE SOME_BUCKET as doc 
USE KEYS ["USER_ACCESS::123456::SOME_ROLE", "MORE KEYS HERE...", etc]
SET loc.id = REGEXP_REPLACE(loc.id, "(.*) - (.*)", "$1-$2") FOR loc IN locations END
RETURNING doc;

【讨论】:

  • 我最初有 SET 命令,但它一直将值设置为“$1-$2”,即字符串文字替换。我想知道这是否是 GoLang Regex 中的反向引用限制(根据 Couchbase 文档,“Couchbase Server N1QL 支持 Go 编程语言支持的正则表达式......”
猜你喜欢
  • 1970-01-01
  • 2014-06-19
  • 2010-11-19
  • 2019-01-27
  • 1970-01-01
  • 2019-10-16
  • 2019-02-22
  • 2013-06-27
  • 2020-10-04
相关资源
最近更新 更多