正则表达式从字符串中提取带小数的第一个数字

时间:2018-08-14 23:49:31

标签: regex

我在正则表达式下面有这个,我想用它从字符串中提取带小数的数字

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

 scala> numPattern.findFirstIn("s2s")
 res24: Option[String] = Some(2)

 scala> numPattern.findFirstIn("s2.4s")
 res25: Option[String] = Some(2.4)

但是在以下这些情况下,我想提取.4和.42。

 scala> numPattern.findFirstIn("s.4s")
 res26: Option[String] = Some(4)

 scala> numPattern.findFirstIn("s.42s")
 res28: Option[String] = Some(42)

我该怎么做?

相同的结果
scala> val numPattern="""(\d+)([.]\d+)?""".r

1 个答案:

答案 0 :(得分:1)

尝试此正则表达式:

\d+(\.\d*)?|\.\d+

请参见live demo

您不能同时选择可选的前导后缀数字,因为它们将与空字符串匹配。