用于bigquery的Regex返回/api之后的所有路径
我使用github的dataset来提取/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
- /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/*')
。TryREGEXP_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