首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以char开头的regex_replace值,后面跟着整数BigQuery SQL。

以char开头的regex_replace值,后面跟着整数BigQuery SQL。
EN

Stack Overflow用户
提问于 2022-01-14 15:20:52
回答 2查看 195关注 0票数 1

我在BigQuery有一张桌子需要清理。在列content_column中,我的值如下:

代码语言:javascript
复制
content_column
/a68786776
/g263647
/g47664
/galleries
/music

我希望将以/g开头的所有值替换为字符串gallery,后面跟着任意数量的整数。期望的输出是:

代码语言:javascript
复制
content_column
/a68786776
gallery
gallery
/galleries
/music

我尝试了以下几点:

代码语言:javascript
复制
SELECT regexp_replace(content_column,r'\/(\w+\d+)\/', "gallery") as content_column
FROM `my_table`

这是可行的,但它也将/a68786776转换为gallery。我试图将(\w+\d+)替换为(\^g\d+),但这并没有将任何东西转换为图片库。

谢谢你提前帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-14 18:10:37

考虑以下方法

代码语言:javascript
复制
select if(
    regexp_contains(content_column,r'^/g\d+'), 
    'gallery', 
    content_column
  ) as content_column
from `my_table`         

如果应用于问题中的样本数据,则输出为

票数 1
EN

Stack Overflow用户

发布于 2022-01-14 15:38:10

如果要用gallery替换完全匹配,则不需要模式中的捕获组。

  • 此模式\w+\d+匹配1+单词字符和1+数字,这至少有2个字符,并且没有指定g字符。
  • 此模式\^g\d+^g和1+数字匹配。

相反,您可以匹配/和1或更多位数:

代码语言:javascript
复制
r'/g\d+

Regex演示

或使用带有多行标志的锚点^ (清除反斜杠)从字符串的开始进行匹配:

代码语言:javascript
复制
(?m)^/g\d+
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70712808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档