栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java:如何从正则表达式解析双精度

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java:如何从正则表达式解析双精度

我可能会在这部分上弄错了,但之所以将两者分开是因为
group()
仅匹配最后匹配的子序列,这是每次find()调用都会匹配的东西。

谢谢马克·拜尔斯。

但是可以肯定的是,您可以通过将所需的整个零件放在“捕获组”中来解决此问题,这可以通过将其放在括号中来完成。这样一来,您就可以将正则表达式的匹配部分组合到一个子字符串中。您的模式将如下所示:

Pattern.compile("C=(\d+\.\d+)")

对于解析3567或3.567,您的模式将是

C=(\d+(\.\d+)?)
第1组代表整数。
另外,请注意,由于您特别想匹配一个句点,因此您希望转义
.
(句点)字符,以便不将其解释为“任何字符”标记。不过,对于此输入,这并不重要

然后,要得到3.567,您将呼叫m。group(1)获取第一个(从1开始计数)指定的组。这意味着您的Double.parseDouble调用实际上将变为

Double.parseDouble("3.567")

至于将C =从您的模式中删除,由于我对RegExp不太了解,因此我建议您在分号上分割输入字符串,然后检查每个分割是否包含C。那么您可以应用模式(与捕获组一起使用)从Matcher中获取3.567。

编辑 对于gawi评论中更一般(可能更有用!)的案例,请使用以下内容(来自http://www.regular-
expressions.info/floatingpoint.html)

Pattern.compile("[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?")

它支持可选符号,可选整数或可选小数部分以及可选正/负指数。在需要的地方插入捕获组以单独挑选零件。整个指数都在自己的组中,以使其整体上是可选的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419147.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号