我正在使用 github 数据集来提取/api/* 之后的所有路径,为此我使用了下面提到的查询。然而,结果并不是我所期望的。如果正则表达式错误,有人可以纠正吗?
预期结果:
/api/v1/用户
/api/任何内容/任何内容
实际返回的内容:
- 框架/TwitterKit.framework/资源
- doc/source/README.rst
*
FROM
`bigquery-public-data.github_repos.files`
WHERE
(REGEXP_CONTAINS(path,r'(s|^.*/api/([^/]*)(?:/.*)?$|$1|)'))
LIMIT
100```
最佳答案
您正在正则表达式模式中使用 Perl s
ubstitution 命令。看:
s|^.*/api/([^/]*)(?:/.*)?$|$1 |
|| |RHS
||___pattern______________|
|___ action
其中RHS
(右侧)是替换。
您只需在 BigQuery 中使用模式。为了匹配您想要的字符串,您可以使用
^/api/[^/]*(?:/.*)?$
请参阅RE2 regex demo .
SELECT * FROM `bigquery-public-data.github_repos.files`
WHERE REGEXP_CONTAINS(path,r'^/api/[^/]*(?:/.*)?$')
LIMIT 100
关于bigquery 的正则表达式返回/api 之后的所有路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63991825/