首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Scala regex从文本中提取9+.9*格式的数字

问使用Scala regex从文本中提取9+.9*格式的数字
EN

Stack Overflow用户
提问于 2018-06-19 06:30:18
回答 1查看 382关注 0票数 0

我想匹配小数与整数部分,但有或没有小数部分,例如1.1,0.1,1.,但不是.1在Scala。

目前,我的解决方案是

代码语言:javascript
复制
val pattern: Regex = raw"\d+.\d*".r;

但是,它错误地匹配了小数".2000“。pattern.findAllIn(".2000").toList(0)将等于2000。怎么了?

EN

回答 1

Stack Overflow用户

发布于 2018-06-19 15:08:58

未转义的点匹配除换行符以外的任何chsar。

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

代码语言:javascript
复制
val pattern: Regex = """\d+\.\d*""".r

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

如果您希望避免在192.168.0.2中匹配192.168,可以添加一些查找,例如

代码语言:javascript
复制
val pattern: Regex = """(?<!\d\.)\d+\.\d*(?!\.?\d)""".r

请参阅regex demo。在这里,(?<!\d\.)负向后视不允许数字和点出现在所需格式的数字之前,而(?!\.?\d)负向前视禁止. +数字或紧跟在数字之后的数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50918293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档