正则表达式:在 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 列