BigQuery正向预查替代方案:提取最后斜杠前的全部内容
BigQuery提取URL最后一个斜杠前内容的解决方案
针对你需要提取URL最后一个斜杠("/")之前内容的需求,结合BigQuery不支持正则预查/后查的限制,提供两种实用方案:
方案1:使用REGEXP_REPLACE直接替换冗余部分
通过匹配最后一个斜杠及之后的所有内容,将其替换为空字符串,无需依赖预查/后查语法:
SELECT REGEXP_REPLACE( 'https://www.businessinsider.de/gruenderszene/plus-angebot/?tpcc=onsite_gs_header_nav&verification_code=DOVCGF75J8LSID', '/[^/]*$', '' ) AS cleaned_url;
逻辑说明:
/[^/]*$是核心正则:/匹配最后一个斜杠[^/]*匹配斜杠后所有非斜杠字符$锚定到字符串结尾,确保只匹配最后一段内容
- 替换为空后,直接得到最后一个斜杠前的完整URL。
方案2:通过字符串拆分与数组重组实现
如果对正则不太熟悉,可以用BigQuery的数组操作函数完成:
SELECT ARRAY_TO_STRING( ARRAY_REVERSE( ARRAY_SLICE(ARRAY_REVERSE(SPLIT(url, '/')), 1, ARRAY_LENGTH(SPLIT(url, '/'))) ), '/' ) AS cleaned_url FROM ( SELECT 'https://www.businessinsider.de/gruenderszene/plus-angebot/?tpcc=onsite_gs_header_nav&verification_code=DOVCGF75J8LSID' AS url );
逻辑说明:
SPLIT(url, '/')将URL按斜杠拆分成数组ARRAY_REVERSE反转数组,让最后一段内容(斜杠后部分)移到数组首位ARRAY_SLICE截取掉反转后的第一个元素,保留前面所有部分- 再次反转数组恢复原有顺序,最后用
ARRAY_TO_STRING以斜杠拼接成完整URL
内容的提问来源于stack exchange,提问作者Minh Anh Hoang
相关产品推荐
相关产品推荐

