regex_replace 以 char 开头,后跟整数的值 BigQuery SQL
regex_replace value that starts with char, followed by integers BigQuery SQL
我在 BigQuery 中有一个 table 需要清理。在 content_column
列中,我的值如下:
content_column
/a68786776
/g263647
/g47664
/galleries
/music
我想将所有以 /g
开头后跟任意数量的整数的值替换为字符串 gallery
。期望的输出是:
content_column
/a68786776
gallery
gallery
/galleries
/music
我尝试了以下方法:
SELECT regexp_replace(content_column,r'\/(\w+\d+)\/', "gallery") as content_column
FROM `my_table`
这有效,但它也会将 /a68786776
转换为 gallery
。我尝试将 (\w+\d+)
替换为 (\^g\d+)
,但没有将任何内容转换为图库。
提前感谢您的帮助。
如果您想用 gallery
替换完整匹配项,则模式中不需要捕获组。
- 此模式
\w+\d+
匹配 1+ 个单词字符和 1+ 个数字,最少 2 个字符且未指定 g
字符
- 此模式
\^g\d+
匹配 ^g
和 1+ 个数字。
相反,您可以匹配 /
和 1 个或多个数字:
r'/g\d+
或者使用带有多行标志的锚 ^
(没有反斜杠)从字符串的开头开始匹配:
(?m)^/g\d+
考虑以下方法
select if(
regexp_contains(content_column,r'^/g\d+'),
'gallery',
content_column
) as content_column
from `my_table`
如果应用于您问题中的示例数据 - 输出为
我在 BigQuery 中有一个 table 需要清理。在 content_column
列中,我的值如下:
content_column
/a68786776
/g263647
/g47664
/galleries
/music
我想将所有以 /g
开头后跟任意数量的整数的值替换为字符串 gallery
。期望的输出是:
content_column
/a68786776
gallery
gallery
/galleries
/music
我尝试了以下方法:
SELECT regexp_replace(content_column,r'\/(\w+\d+)\/', "gallery") as content_column
FROM `my_table`
这有效,但它也会将 /a68786776
转换为 gallery
。我尝试将 (\w+\d+)
替换为 (\^g\d+)
,但没有将任何内容转换为图库。
提前感谢您的帮助。
如果您想用 gallery
替换完整匹配项,则模式中不需要捕获组。
- 此模式
\w+\d+
匹配 1+ 个单词字符和 1+ 个数字,最少 2 个字符且未指定g
字符 - 此模式
\^g\d+
匹配^g
和 1+ 个数字。
相反,您可以匹配 /
和 1 个或多个数字:
r'/g\d+
或者使用带有多行标志的锚 ^
(没有反斜杠)从字符串的开头开始匹配:
(?m)^/g\d+
考虑以下方法
select if(
regexp_contains(content_column,r'^/g\d+'),
'gallery',
content_column
) as content_column
from `my_table`
如果应用于您问题中的示例数据 - 输出为