提问人:Ruan Brand 提问时间:11/16/2023 最后编辑:Wiktor StribiżewRuan Brand 更新时间:11/20/2023 访问量:54
LookerStudio 中的REGEXP_REPLACE问题
REGEXP_REPLACE issue in LookerStudio
问:
目前,我面临着一个问题,即我在 LookerStudio 中使用数字作为文本,并希望在将其保留为文本的同时为其添加一千个分隔符。
我使用的值是 12345678,我希望它是 12,345,678
我尝试使用以下功能:REGEXP_REPLACE
CONCAT("Value = ", REGEXP_REPLACE(CAST(my_value AS TEXT),"\\B(?=(\\d{3})+(?!\\d))", ","))
这导致了一个破碎的字段。经进一步调查,参考 https://github.com/google/re2/wiki/Syntax,?= 和 ?!不支持部分。有人可以协助解决方法或新方法吗?
答:
0赞
Wiktor Stribiżew
11/20/2023
#1
不能在 RE2 模式中使用环理。
但是,如果您知道可以有最大数量的数字分组(这里通常不超过四个 - 最多数十亿个),并且嵌套以下函数,则可以解决此问题REGEXP_REPLACE
REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(col, ",*(\\d{3})\\b,*", ",$1"), ",*(\\d{3})\\b,*", ",$1"), ",*(\\d{3})\\b,*", ",$1"), ",*(\\d{3})\\b,*", ",$1")
然后,修剪字符串开头/结尾处的逗号。
模式匹配
,*
- 零个或多个逗号(\d{3})
- 第 1 组:三位数字\b
- 单词边界,*
- 零个或多个逗号。
替换项将匹配项替换为逗号和组 1 值。,$1
评论
REGEXP_REPLACE(..., ",*(\\d{3})\\b,*", ",$1")
TRIM