用于bigquery的Regex返回/api之后的所有路径

用于bigquery的Regex返回/api之后的所有路径,regex,github,google-bigquery,Regex,Github,Google Bigquery,我使用github的dataset来提取/api/*之后的所有路径,为此我使用了下面提到的查询。然而,结果并不是我预期的那样。如果正则表达式是错误的,有人能纠正它吗 预期成果: /api/v1/user /api/任何东西/任何东西 实际回报: Frameworks/TwitterKit.framework/Resources doc/source/README.rst 您正在regex模式中使用Perlssubstitution命令。看: 其中,RHS(右侧)是替换件 您只需要在B

我使用github的dataset来提取/api/*之后的所有路径,为此我使用了下面提到的查询。然而,结果并不是我预期的那样。如果正则表达式是错误的,有人能纠正它吗

预期成果:

  • /api/v1/user

  • /api/任何东西/任何东西

实际回报:

  • Frameworks/TwitterKit.framework/Resources
  • doc/source/README.rst

您正在regex模式中使用Perl
s
substitution命令。看:

其中,
RHS
(右侧)是替换件

您只需要在BigQuery中使用模式。要匹配所需字符串,可以使用

^/api/[^/]*(?:/.*)?$

如果正则表达式是错误的,有人能纠正它吗

同时,请注意:您的问题的标题与问题正文不一致-
REGEXP\u CONTAINS
in WHERE子句只允许您返回路径中具有搜索模式的所有行,但不提取模式


要提取模式-您需要在SELECT语句中使用
REGEXP_extract(path,r'/api/*')

Try
REGEXP_CONTAINS(path,r'^/api/[^/]*(?:/))
@WiktorStribiżew感谢您的回答,但现在查询结果为“此查询未返回任何结果”。好吧,regex是。。。
s|^.*/api/([^/]*)(?:/.*)?$|$1 |
||                        |RHS
||___pattern______________|
|___ action
^/api/[^/]*(?:/.*)?$
SELECT * FROM `bigquery-public-data.github_repos.files`
  WHERE REGEXP_CONTAINS(path,r'^/api/[^/]*(?:/.*)?$')
    LIMIT 100
#standardSQL
SELECT *
FROM `bigquery-public-data.github_repos.files`
WHERE REGEXP_CONTAINS(path, r'/api/.*')
LIMIT 100