使用Scala正则表达式从文本中提取9 + .9 *格式的数字

时间:2018-06-18 22:30:18

标签: regex scala

我想将小数与整数部分匹配,但有或没有小数部分,例如Scala中的1.10.11.但不是.1

目前,我的解决方案是

val pattern: Regex = raw"\d+.\d*".r;

然而,它错误地匹配小数" .2000"。 pattern.findAllIn(".2000").toList(0)等于2000.问题是什么?

1 个答案:

答案 0 :(得分:1)

非转义点与任何chsar匹配,但与换行符匹配。

在最基本的形式中,提取符合9+.9*格式的数字的正则表达式将如下所示

val pattern: Regex = """\d+\.\d*""".r

请参阅regex demo。在这里,\d+匹配1位数,\.匹配单个点,\d*匹配0位或更多位数。

如果您想避免在192.168中匹配192.168.0.2,请添加一些外观,例如

val pattern: Regex = """(?<!\d\.)\d+\.\d*(?!\.?\d)""".r

请参阅regex demo。在此处,(?<!\d\.)否定反馈不允许数字和点出现在所需格式的数字之前,(?!\.?\d)否定前瞻禁止. +数字或仅数字右数在号码之后。