bigquery 的正则表达式返回/api 之后的所有路径

标签 regex github google-bigquery

我正在使用 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 substitution 命令。看:

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/

相关文章:

php - 使用 preg_match_all 从字符串中提取单词

python - 创建一个列,其中包含 Python 中 URL 中每一行的域名

git - 是否可以在 GitHub 存储库上定义自己的语法?

google-bigquery - 每组第一行

javascript - 使用 JavaScript 从 BigQuery 获取信息

php - 表达式的开头或结尾没有句点?

git - Heroku:如何将不同的本地 Git 分支推送到 Heroku/master

node.js - GitHub Webhook secret 从不验证

sql - Bigquery 从任何列包含 'FINISHED' 的表中选择

javascript - 在javascript中使用正则表达式获取引号外的代码