正则表达式:在 Google Bigquery 中提取正斜杠后的所有内容?

Posted

技术标签:

【中文标题】正则表达式:在 Google Bigquery 中提取正斜杠后的所有内容?【英文标题】:Regex: Extract everything after forward slash in Google Bigquery? 【发布时间】:2021-06-16 14:45:55 【问题描述】:

我有以下两种情况。我想提取search/ 之后或search/category/ 之间的所有内容

场景 1,我想要 search/ 之后的所有内容:

/listBuilder/20568284/search/1"X4"-8 t%26g

场景 2,我想要 search/ and category/ 之间的所有内容:

listBuilder/20464071/search/decking screws/category/6765

编辑和进一步澄清

假设我有一列包含以下信息

Column1
/listBuilder/20568284/search/1"X4"-8 t%26g
listBuilder/20464071/search/decking screws/category/6765

如何使用正则表达式从 column1 获取具有以下理想信息的新列

Column2 
1"X4"-8 t%26g
decking screws

【问题讨论】:

【参考方案1】:

考虑下面

select text, 
  regexp_extract(text, r'search/(.+)') as after_search,
  regexp_extract(text, r'search/(.+)category/') as between_search_and_category,
from `project.dataset.table`     

如果您需要处理/提取到一列 - 请在下面考虑

select regexp_extract(text, r'search/(.+?)(?:/category|$)')  
from `project.dataset.table`     

如果应用于您问题中的样本数据 - 输出是

【讨论】:

非常感谢这应该可以工作,但是这两个字符串都在一个列中。是否有任何逻辑可以在一行代码中完成? 不确定您的意思 - 发布新问题并提供详细信息,我们将很乐意回答:o) 我可能会编辑当前问题,因为我不确定如何正确地改写问题,而不会堆栈说我的问题与另一个问题的措辞相似 更新了当前问题,非常感谢 进行编辑后,您只需将@MikhailBerlyant 答案中的两个 regex_extract 替换为带有 regex_extract(text, , r'search\/(.+)(?:category\/|$) 的组合 regex_extract ')

以上是关于正则表达式:在 Google Bigquery 中提取正斜杠后的所有内容?的主要内容,如果未能解决你的问题,请参考以下文章

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

使用 mysql 正则表达式验证我的 google bigquery 数据库中的电子邮件地址

将猪拉丁正则表达式代码转换为 Google BigQuery

通过正则表达式过滤器过滤 Google BigQuery 列

使用正则表达式的 Google Bigquery Proximity 搜索

如何为 Google BigQuery 转义 JavaScript UDF 中的字符?