BigQuery:字符串后的正则表达式

Posted

技术标签:

【中文标题】BigQuery:字符串后的正则表达式【英文标题】:BigQuery : Regex after a string 【发布时间】:2016-10-10 20:23:38 【问题描述】:

我有一列的值为 source:destination:city:street:number,我想只获取没有 : 的城市。

我该怎么做?

提前致谢

【问题讨论】:

【参考方案1】:

我该怎么做?

适用于 BigQuery 方言:旧版 SQL 和标准 SQL

SELECT 
  REGEXP_EXTRACT('source:destination:city:street:number', r'(?:.+:)2(.+)(?::.+)2')  

查看更多 REGEXP_EXTRACT 和 re2 syntax

如果我需要源后面的第一个词:例如?

SELECT 
  REGEXP_EXTRACT('source:destination:city:street:number', r'(?:.+:)1(.+)(?::.+)3')  

这里有很多选项供您选择,具体取决于您的具体需求 下面是另一个(BigQuery Legacy SQL)

SELECT 
  NTH(1, SPLIT(text,':')) AS source,
  NTH(2, SPLIT(text,':')) AS destination,
  NTH(3, SPLIT(text,':')) AS city,
  NTH(4, SPLIT(text,':')) AS street,
  NTH(5, SPLIT(text,':')) AS number
FROM (
  SELECT 'source:destination:city:street:number' AS text
)

【讨论】:

感谢您的回答,如果我需要source后面的第一个词:例如?

以上是关于BigQuery:字符串后的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

如何在bigquery中获取字符串中正则表达式的匹配数?

在 Google BigQuery 中将字符串保存为正则表达式

BigQuery 正则表达式从字符串中删除/替换文本列表

用 Google BigQuery 中的文字替换正则表达式字符

BigQuery 正则表达式提取两个子字符串之间的字符串

拆分字符串,提取并添加到另一列正则表达式 BIGQUERY