scala 提取文件路径的一部分

1szpjjfi  于 5个月前  发布在  Scala
关注(0)|答案(2)|浏览(86)

使用Scala,我试图从路径中提取一个值,例如。

val path = hdfs://aloha/data/8907yhb/folders/folder=2319/

字符串
我可以使用什么正则表达式[提取部分]
我在https://regexr.com/上试过了
[

]
https://i.stack.imgur.com/pvgVX.png

"=[0-9]*"


我没有得到我所期望的。
我得到的最好的结果:

=2319


但我只需要

2319

4ngedf3f

4ngedf3f1#

你可以使用look behind (?<=...)模式。

(?<==)[0-9]* // matches zero or more digits but only if they follow the '=' sign.

字符串
范例:

scala> "(?<==)[0-9]*".r.findAllIn("hdfs://aloha/data/8907yhb/folders/folder=2319/").toList

List(2319)

mec1mxoz

mec1mxoz2#

您可以使用捕获组,并重复匹配数字1次或多次,以防止空匹配:

=([0-9]+)

字符串
参见regex demoScala demo
举例来说:

val path = "hdfs://aloha/data/8907yhb/folders/folder=2319/"
val pattern = "=([0-9]+)".r

val result = pattern.findFirstMatchIn(path) match {
  case Some(v) => v.group(1)
  case _ => "No match"
}

println(result)


或者使用\d匹配数字:

val pattern = "=(\\d+)".r


输出

2319

相关问题