regex - Scala Regex 捕获单独的组
问题描述
我需要分别捕获 3 个组。例如:
s3://some/path/TIMESTAMP/part-1234.parquet
|----- g1 ---------|------ g2 ------|--------- g3 --------- |
其中 g3 是文件名,g2 是 TIMESTAMP,g1 是时间戳之前的任何内容
我想出了使用 scala 捕获 2 个组:
val pattern = "(.*?)(part.*.parquet)$".r
val pattern(fileBasePath, filename) = row.file_path
我正在寻找的是这样的:
val pattern(fileBasePath, timestamp, filename) = row.file_path
上面的模式会是什么样子?
解决方案
您可以使用
val pattern = """^(.*?)/([^/]+)/(part.*\.parquet)$""".r
请参阅正则表达式演示。
细节
^
- 字符串的开始(.*?)
- 第 1 组:除换行符之外的任何零个或多个字符,尽可能少/
- 一个/
字符([^/]+)
- 第 2 组:任何一个或多个字符,除了/
/
- 一个/
字符(part.*\.parquet)
- Group 3:part
,除换行符之外的任何零个或多个字符,尽可能多,然后是.parquet
子字符串$
- 字符串结束。
推荐阅读
- xamarin - 将 BoxView 或 Frame 的高度绑定到 Xamarin 中的(隐藏的)NavigationBar
- python - 使用 Flask-Injector 和 Flask-restplus 调用 api 资源时出错
- bigcommerce - 如何将带有 pick_list 修饰符的产品添加到购物车
- php - Twitter 广告 API
- javascript - 我如何判断文件名是否包含两个或多个点,例如。45FGG.TESTDOC.MAY12.png ,carimage.30.jpg 那么如何存储此图像及其扩展名
- java - RecycleView onclick 在将高度设置为 match_parent 时不适用于第一项
- php - 在 PHP 中解析配置文件(键值)
- android - 选择下拉菜单在 Android 浏览器 (Chrome) 上无效
- javascript - 如何在另一个 html 页面中访问 JSON 数据?
- cypress - 来自 CLI 的赛普拉斯日志