Select 文件路径中的文件名:无效的 perl 运算符:(?=
Select filename from file path : invalid perl operator: (?=
我正在 BigQuery 上查询 github。我正在尝试使用以下正则表达式从给定文件路径获取文件名,即:给定 /src/components/App.vue
它应该 return App
:
SELECT regexp_extract(f.path, r'[A-Za-z0-9_\-\.]+?(?=\.)') as filename
这给出了问题标题中所述的错误。有没有我可以用来实现我需要的解决方法?
试试下面的方法
SELECT f.path, regexp_extract(f.path, r'/([^/.]+).[^.]*$') as filename
如果应用于您问题中的示例 - 输出为
使用
SELECT regexp_extract(f.path, r'([A-Za-z0-9_-]+?)[.]') as filename
参见regex proof。
解释
--------------------------------------------------------------------------------
( group and capture to :
--------------------------------------------------------------------------------
[A-Za-z0-9_-]+? any character of: 'A' to 'Z', 'a' to
'z', '0' to '9', '_', '-' (1 or more
times (matching the least amount
possible))
--------------------------------------------------------------------------------
) end of
--------------------------------------------------------------------------------
[.] any character of: '.'
我正在 BigQuery 上查询 github。我正在尝试使用以下正则表达式从给定文件路径获取文件名,即:给定 /src/components/App.vue
它应该 return App
:
SELECT regexp_extract(f.path, r'[A-Za-z0-9_\-\.]+?(?=\.)') as filename
这给出了问题标题中所述的错误。有没有我可以用来实现我需要的解决方法?
试试下面的方法
SELECT f.path, regexp_extract(f.path, r'/([^/.]+).[^.]*$') as filename
如果应用于您问题中的示例 - 输出为
使用
SELECT regexp_extract(f.path, r'([A-Za-z0-9_-]+?)[.]') as filename
参见regex proof。
解释
--------------------------------------------------------------------------------
( group and capture to :
--------------------------------------------------------------------------------
[A-Za-z0-9_-]+? any character of: 'A' to 'Z', 'a' to
'z', '0' to '9', '_', '-' (1 or more
times (matching the least amount
possible))
--------------------------------------------------------------------------------
) end of
--------------------------------------------------------------------------------
[.] any character of: '.'