Scala Regex捕获单独的组



我需要分别捕获3组。例:

s3://一些/道路/时间戳/- 1234.部分镶花

|——g1 ---------|------ g2 ------|--------- g3 ---------|

其中g3是文件名,g2是时间戳,g1是时间戳之前的任何内容

我用scala捕获了两个组:

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

参见regex演示。

细节

  • ^-字符串
  • 起始
  • (.*?)-第1组:除换行符以外的任何零个或多个字符,尽可能少
  • /- a/char
  • ([^/]+)-组2:除/以外的任何一个或多个字符
  • /- a/char
  • (part.*.parquet)-组3:part,除换行符外的任何零个或多个字符,尽可能多,然后是.parquet子字符串
  • $-字符串结束

最新更新