Regex Scala:使用正则表达式提取字符串的一部分
我有一个非常简单的字符串,如下所示:Regex Scala:使用正则表达式提取字符串的一部分,regex,scala,Regex,Scala,我有一个非常简单的字符串,如下所示: "Some(1234)" 我想从中提取“1234”。我怎么做 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 把你的正则表达式换成你需要的
"Some(1234)"
我想从中提取“1234”。我怎么做
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
把你的正则表达式换成你需要的<代码>\d+仅将其限制为数字。从
Scala 2.13
开始,可以通过以下方式对字符串进行模式匹配:
还请注意,如果要从其toString
版本中提取选项[Int]
,则可以将插值提取与匹配语句一起使用:
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
如果不匹配怎么办?将抛出scala.MatchError
。
val s"Some($number)" = "Some(1234)"
// number: String = 1234
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