我需要分别捕获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
子字符串$
-字符串结束