Scala:使用正则表达式提取字符串的一部分

问题描述 投票:4回答:3

我有一个非常简单的字符串,如下所示:

"Some(1234)"

我想从中提取“1234”。我该怎么做?

regex scala
3个回答
5
投票
val s = "Some(1234)"
//s: java.lang.String = Some(1234)

val Pattern = """Some\((\d+)\)""".r
//Pattern: scala.util.matching.Regex = Some\((\d+)\)

val Pattern(number) = s
//number: String = 1234

切换你的正则表达式,无论你需要什么。 \d+仅限数字。


3
投票
scala> val s = "Some(1234)"
s: String = Some(1234)

scala> val nums = "[0-9]".r
nums: scala.util.matching.Regex = [0-9]

scala> nums.findAllIn(s).mkString
res0: String = 1234

1
投票

启动Scala 2.13,可以通过String模拟匹配unapplying a string interpolators:

val s"Some($number)" = "Some(1234)"
// number: String = 1234

另请注意,如果想要从Option[Int]版本中提取toString,则可以使用match statement进行插值提取:

x match { case s"Some($number)" => number.toIntOption case _ => None }
// x = "Some(1234)"     =>     Option[Int] = Some(1234)
// x = "Some(1S3R)"     =>     Option[Int] = None
// x = "None"           =>     Option[Int] = None
© www.soinside.com 2019 - 2024. All rights reserved.