如何在BigQuery中提取URL中.com/之后至下一个/之前的特定值?
解决URL提取特定片段的问题
你遇到的问题很典型——固定数组偏移量在URL结构不一致的时候确实会失效,因为不同URL的分段数不一样。这里推荐用正则表达式匹配的方法,它能精准定位你需要的.com/之后到下一个/之间的内容,不受其他路径部分长度的影响。
解决方案(BigQuery SQL)
使用REGEXP_EXTRACT函数,匹配特定模式来提取目标字符串:
SELECT url, REGEXP_EXTRACT(url, r'\.com/([^/]+)') AS new_string FROM ( SELECT 'https://www.delish.com/food-news/news/jdhgkjdf/100-years-of-christmas' AS url UNION ALL SELECT 'https://www.delish.com/food-news/news/100-years-of-christmas' AS url )
结果输出
| url | new_string |
|---|---|
| https://www.delish.com/food-news/news/jdhgkjdf/100-years-of-christmas | food-news |
| https://www.delish.com/food-news/news/100-years-of-christmas | food-news |
正则表达式说明
r'\.com/':匹配字符串中的.com/,这里的\.是转义后的点(因为正则里.默认匹配任意字符)([^/]+):捕获一个或多个不是斜杠的字符,也就是.com/之后到下一个/之前的所有内容,这正是你需要提取的部分
这种方法不管URL前面的域名格式(比如有没有www)或者后面的路径有多长,都能准确提取目标片段,比固定偏移量的方法更鲁棒。
内容的提问来源于stack exchange,提问作者Chique_Code
相关产品推荐
相关产品推荐

