我有一个字符串
val path = "/bigdatahdfs/datalake/raw/lum/creditriskreporting/iffcollateral/year=2017/month=05/approach=firb/basel=3/version_partition=8/vFirbtestCollateralBaselIIIData_201705_8_20170620.txt.gz"
模式
.*version_partition=(\d+)(.*)
在regex101.com中按预期工作。
要求是提取两个字符串。一个是“8”(恰好在version_partition =之后),另一个是“/vFirbtestCollateralBaselIIIData_201705_8_20170620.txt.gz”
在scala REPL中,相同的模式给出了scala.MatchError。我是使用正则表达式的新手。不知道我在这里做错了什么。请帮帮我。
scala代码
val P = """.*version_partition=(\d+)(.*)""".r
val P(ver,fileName) = path;
我也试过/ g和/ m标志。它不起作用。
答案 0 :(得分:1)
您的代码有效:https://scalafiddle.io/sf/Xz1Y0Ze/0
你不需要/ g和/ m标志。
代码:
val path = "/bigdatahdfs/datalake/raw/lum/creditriskreporting/iffcollateral/year=2017/month=05/approach=firb/basel=3/version_partition=8/vFirbtestCollateralBaselIIIData_201705_8_20170620.txt.gz"
val P = """.*version_partition=(\d+)(.*)""".r
val P(ver,fileName) = path;
println(ver)
println(fileName)
答案 1 :(得分:0)
尝试使用这样的匹配:
val path = "/bigdatahdfs/datalake/raw/lum/creditriskreporting/iffcollateral/year=2017/month=05/approach=firb/basel=3/version_partition=8/vFirbtestCollateralBaselIIIData_201705_8_20170620.txt.gz"
val P = """.*version_partition=(\d+)(.*)""".r
path match {
case P(a,b) ⇒
println(a)
println(b)
}
答案 2 :(得分:0)