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

2023-12-24

我有一个看起来像“A=1.23;B=2.345;C=3.567”的字符串

我只对“C=3.567”感兴趣

到目前为止我所拥有的是:

     Matcher m = Pattern.compile("C=\\d+.\\d+").matcher("A=1.23;B=2.345;C=3.567");

    while(m.find()){ 
        double d = Double.parseDouble(m.group());
        System.out.println(d);
    }

问题是它显示 3 与 567 是分开的

output:

3.0

567.0

我想知道如何包含小数以便它输出“3.567”

编辑:如果 C 没有小数点,我也想匹配它: 所以我想捕获 3567 以及 3.567

由于 C= 也内置在模式中,我如何在解析双精度之前将其删除?


这部分我可能弄错了,但将两者分开的原因是因为group() http://download.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html#group()只会匹配最后一个匹配的子序列,这是每次调用所匹配的内容find() http://download.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html#find().罢工>谢谢,马克·拜尔斯。

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

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

对于解析 3567 或 3.567,您的模式将是 C=(\\d+(\\.\\d+)?) 其中第 1 组代表整数。另外,请注意,由于您特别想匹配句点,因此您想逃避您的.(句点)字符,这样它就不会被解释为“任意字符”标记。不过,对于这个输入来说,这并不重要

然后,要获得 3.567,您需要致电 m。group(1) http://download.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html#group(int)获取第一个(从 1 开始计数)指定的组。这意味着您的 Double.parseDouble 调用本质上会变成Double.parseDouble("3.567")

至于将 C= 从您的模式中剔除,因为我不太熟悉 RegExp,所以我可能会建议您split http://download-llnw.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String)将输入字符串放在分号上,然后检查每个分割是否包含 C;然后您可以应用该模式(使用捕获组)从匹配器中获取 3.567。

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:如何从正则表达式解析双精度 的相关文章

随机推荐

  • QT4:如何重新启动应用程序?重新设置? [复制]

    这个问题在这里已经有答案了 1 我想重新启动我的 QT4 应用程序 只是同一应用程序的正常关闭和启动 2 为什么 好吧 我需要一个选项来 重置 一切 重新启动应用程序似乎是最简单的方法 问题是 有很多课程和一切 我没有时间将它们的每个设置恢
  • 如何比较两个图像?

    public void winCheck if button1 Image img1 w1 P2 button1 Image new Bitmap win cross png button2 Image new Bitmap win cro
  • 在刀片模板中包含 css 文件吗?

    我想在我的 Laravel Blade 模板中包含一个 css 文件 我试过了 include public path css styles css 但它说视图不存在 它确实存在 如何包含 css 文件 请注意 我知道这不是链接 css 文
  • JavaScript 回调函数中的变量范围

    我预计下面的代码会警告 0 和 1 但它警告 2 两次 我不明白原因 不知道是不是jquery的问题 另外 如果这篇文章的标题和标签不准确 请帮助我编辑
  • 如何用不同的标记绘制多条线

    我想绘制多条线MATLAB http en wikipedia org wiki MATLAB这样做 每一行的标记都会不同 我知道通过颜色可以实现这一点ColorSet hsv 12 有没有像这种简单的标记方法 好吧 我不知道内置功能MAT
  • 检测文本中的信用卡号

    我正在尝试找到一种组件或方法来检测文本中不同类型的信用卡号码 我找到了很多有关验证信用卡号的信息 但我需要能够获取文本正文 例如网页并检查是否存在信用卡号 银行帐号和 或排序代码 有谁知道有一个可以帮助商业或其他方面的组件吗 具体来说 我的
  • 黑莓表视图

    这是我的应用程序 如何在下面添加表格视图或网格 我应该画所有东西吗请帮忙 这是我的代码 import net rim device api ui import net rim device api ui component import n
  • Bash 中的 if、elif、else 语句问题

    我似乎无法弄清楚以下问题是什么if声明是关于elif and then 请记住printf仍在开发中 我只是还无法在声明中对其进行测试 因此很可能是错误的 我收到的错误是 timezone string sh line 14 syntax
  • 如何在 SwiftUI 中的文本末尾添加按钮?

    我想在游戏中心设置中创建一个类似于 Apple 的 UI 其中文本末尾有一个可点击的链接 我正在使用 SwiftUI 我尝试结合Text and Button有几个方面 Form Text A social gaming service t
  • PHP - 如何在没有 API 访问令牌的情况下从 Instagram 获取图像

    我可以在没有 Instagram API 或访问令牌的情况下从 Instagram 个人资料获取图像吗 您可以获得所有图像 只需迭代它们page info 另外 还有更方便的获取json的方式 otherPage nasa profileU
  • 如何在 javascript 中实现 C# 访问修饰符?

    Summary 我尝试在 javascript 中正确实现继承和封装 就像在基于类的语言 例如 c 中一样 丑陋的部分是受保护的成员在私有实例中有多个副本 这些副本只能通过闭包访问 除了将这些成员刷新到私有实例之外我没有任何想法 如果可以的
  • 由于连接字符串不正确,连接到 Azure MySQL 服务器失败

    当尝试从 mysql 客户端连接到 Azure 中的 MySQL 服务器时 即使我使用正确的用户名和服务器名称 也会收到以下错误 我怎样才能解决这个问题 连接字符串可能不正确 请访问门户网站以获取参考 连接到 Azure Database
  • JTable:覆盖 CTRL+C 行为

    I have a JTable set on SINGLE SELECTION mode i e the user can only select one row at a time I am trying to override the
  • 在常规 Maven 构建中使用 Eclipse p2 存储库中的依赖项?

    我想在 常规 Maven 3 构建 例如 JAR 或 WAR 打包 中使用来自远程 Eclipse p2 存储库的依赖项 所有这些都无需将 p2 存储库转换为本地 Maven 存储库 这就是 osgi to maven2 和m4e 似乎可以
  • React 在状态更改后不重新渲染,如何设置子组件的状态?

    Problem 我将立法者集合放入表中 字段标题是按钮 并附加了单击事件 通过单击的字段按钮对集合进行排序 render const legislatorList this populateList creates an Array of
  • javascript 仅当选项卡/浏览器窗口聚焦时才应运行[重复]

    这个问题在这里已经有答案了 可能的重复 检测浏览器选项卡是否具有焦点 https stackoverflow com questions 7389328 detect if browser tab has focus 我有一个简单的java
  • 为什么Python同时使用引用计数和标记-清除来进行GC?

    我的问题是为什么 python 同时使用引用计数和标记和清除来进行GC 为什么不只是标记和清除 我最初的猜测是 使用引用计数可以轻松删除非循环引用的对象 这可能会在一定程度上加快标记和清除速度并立即获得内存 不知道我的猜测是否正确 有什么想
  • 使用 mod_rewrite,如何强制路径和查询字符串全部小写?

    这看起来应该是一件很容易做到的事情 但我一生都无法弄清楚这一点 我想强制我的整个 URL 为小写 例如 http www EXAMPLE com foo q bar http www example com FOO q bar http w
  • ng-repeat动态变量名

    我正在实现 ng repeat 来为引导手风琴界面创建元素 我有 ng repeat 工作 但是我遇到的问题是我需要动态创建 ID 以便单独定位手风琴元素 我的 ng repeat HTML 块引用 div class panel head
  • Java:如何从正则表达式解析双精度

    我有一个看起来像 A 1 23 B 2 345 C 3 567 的字符串 我只对 C 3 567 感兴趣 到目前为止我所拥有的是 Matcher m Pattern compile C d d matcher A 1 23 B 2 345