Java 正则表达式 String.matches 工作不一致

2024-05-01

我有一个正则表达式来检查字符串是否是数字。该格式的千位分隔符是空格,小数分隔符是点。小数点后部分是可选的。

问题是,在某些时候 String.matches() 函数会停止按预期工作。以前有效的方法现在不再有效了。

例如,JUnit 代码:

import junit.framework.Assert;
import org.junit.Test;

public class RegExTest {

    @Test
    public void testThousandSeperatorRegex()
    {
        String regEx = "([0-9]{1,3}( [0-9]{3})*(\\.[0-9]+)?|\\.[0-9]+)";
        Assert.assertEquals(true, "1".matches(regEx));
        Assert.assertEquals(true, "10".matches(regEx));
        Assert.assertEquals(true, "100".matches(regEx));
        Assert.assertEquals(true, "1 000".matches(regEx));
        Assert.assertEquals(true, "10 000".matches(regEx));
        Assert.assertEquals(true, "100 000".matches(regEx));
        Assert.assertEquals(true, "1 000 000".matches(regEx));
        Assert.assertEquals(true, "10 000 000".matches(regEx));
        Assert.assertEquals(false, "10000.56".matches(regEx));
        Assert.assertEquals(true, "8 734".matches(regEx));
    }
}

最后一行“8 734”失败。当我用“1000”替换它时,它仍然失败。最终,同一运行中的相同代码在第四行断言中传递,但在最后一行失败(新代码被保存!)。 但有时一切都开始按预期工作,直到......再次开始失败。所以我认为很难重现我的问题。也许还有一些我做错的事情我没有注意到并因此进行了描述,但我试图使其尽可能简单。 这让我很困惑。 String.matches() 有记忆还是什么?

难道正则表达式有问题吗?我正在跳过^$因为 String.matches 无论如何都适用于整个字符串。我尝试过 java.util.regex 和 jregex 包,问题仍然存在。

我使用的是 JDK 6u31。

任何想法表示赞赏。

UPD:好的,发布这个问题后,代码开始工作,到目前为止还没有失败。也许这是我的问题,但这从上周开始就一直困扰着我,而且我已经能够一次又一次地重复它。我将继续我的代码,如果它继续工作,我将关闭这个问题。我还将尝试确定到底是什么导致了问题。 同时,如果有人遇到同样的问题,请分享您的知识。否则,这看起来像是一个可以通过知识来解决的问题,而不是通过调试来解决。 为了防止自己愚蠢,我可以说我已经编程很多年了,这是论坛上的第一篇帖子:)。到目前为止,我能够通过调试、阅读文档和搜索其他 Q 的论坛来解决我的问题。


好的,到目前为止我还没有遇到这个问题。

对于其他有一天碰巧遇到这种情况的人,我只能建议清理你正在工作的环境。这必须对损坏的 JVM 或计算机的内存状态进行一些处理。

感谢大家的贡献。

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

Java 正则表达式 String.matches 工作不一致 的相关文章

随机推荐

  • 如何通过 JavaScript 访问屏幕显示的 DPI 设置? [复制]

    这个问题在这里已经有答案了 有没有办法在 Javascript 函数中访问屏幕显示的 DPI 设置 我试图在页面上放置一个 HTML 面板 当用户的 DPI 设置为大 120 时 它会丢失该位置 我需要知道 DPI 是多少 以便我可以相应地
  • 在 LanguageTool 中,如何创建字典并使用它进行拼写检查?

    如何使用语言工具创建用于拼写检查的词典 我不是 Java 程序员 这是我第一次看到 LT 您好 这是我使用语言工具创建拼写检查词典的经验 希望你喜欢它 Part 1 如何创建字典 你需要 包含字典的 txt 文件 一个 info 文件 指定
  • python请求模块和连接重用

    我正在使用 python 的请求模块进行 HTTP 通信 我想知道如何重用已经建立的 TCP 连接 requests 模块是无状态的 如果我重复调用同一个 URL 的 get 不是每次都会创建一个新连接吗 Thanks 全局函数如reque
  • 如何在 ASP.NET Core 中启用跟踪日志记录?

    我无法获得基本知识LogTrace 我的应用程序中的输出 这是一个重现 使用 Visual Studio 2017 创建新的 ASP NET Core 应用程序 可选 注释掉 UseApplicationInsights 所以重现更清晰 将
  • PyGTK:带线程的 gobject.idle_add() 和 timeout_add()

    是否有任何明确的文档说明idle add timeout add 和 或它们安装的实际回调是否需要锁 任何类型 def work args 1 gtk gdk threads enter needed self ui change some
  • 对于我的智力来说,太多的 order by、max、子查询

    我似乎无法解决这个问题 我确信它需要子查询 但我没有选择 我的大脑无法处理这个或其他事情 我需要帮助 小介绍 我有一个投注赔率网站 每 15 分钟 我都会从不同的博彩公司导入特定赛事的最新赔率 赢 平 输 或 1 X 2 赔率表的每一行都有
  • 如何在 SQL Server 中调试合并?

    我正在尝试学习如何使用 MERGE 运算符 以下代码可以正确编译 ALTER PROCEDURE moto procPM UpdateLines LineId As Int null LineName As Varchar 100 Dele
  • 扩展 Google 地图上的叠加标记?

    我可以将覆盖项目很好地绘制到谷歌地图上 图像如下所示 其中 部分是 图钉 用于标记地图上的纬度 经度以及中间的图片 我的问题是 当用户点击它时有什么办法可以展开它吗 我当然必须将其更改为某种对话框或布局 并在单击时更改它 我想让它变小 就像
  • 如何在 iPhone iOS 4 中设置 UITableViewCell 样式副标题文本对齐方式居中?

    自从使用 iPhone SDK 4 将 XCode 升级到版本 3 2 3 后 我的代码不再工作 我有一个带有样式的默认单元格UITableViewCellStyleSubtitle并想要设置textAlignment of textLab
  • 同时迭代两个数组

    我是斯威夫特的新手 我一直在做Java编程 我有一个需要用 Swift 编写的场景 以下代码是 Java 代码 我需要在 Swift 中为以下场景编写代码 With String array strArr1 String strArr1 S
  • 在 JavaScript 中,如何让函数在特定时间运行?

    我有一个托管仪表板的网站 我可以编辑页面上的 JavaScript 目前每五秒刷新一次 我现在正在尝试获得window print 每天早上8点跑步 我怎么能这样做呢 JavaScript 是not用于此目的的工具 如果您希望某些东西在每天
  • 如何解决 macOS 上的 pygraphviz 错误?

    我在安装 pygraphviz 时遇到问题 并且我在 macOS Monterey 上使用 Anaconda 我已经在 Anaconda 上安装了 graphviz 然后我做了 brew install graphviz and then
  • 从 CLOB 内的 XML 到带有路径列表的 Oracle 表

    我使用的Oracle版本是 BANNER Oracle Database 10g Enterprise Edition Release 10 2 0 4 0 64bi PL SQL Release 10 2 0 4 0 Production
  • Python 解决 Project Euler 问题 #21 的速度似乎很慢

    我正在尝试解决欧拉计划中的问题 21 https projecteuler net problem 21 我认为我写的一切都是正确的 但是 我无法得到最终答案 因为程序没有完全执行 def d num SUM 0 for i in rang
  • Ubuntu OpenCV 无法编译

    我正在尝试使用以下命令编译 OpenCV 3 2 1 cmake DCMAKE BUILD TYPE Release DBUILD SHARED LIBS OFF DCMAKE INSTALL PREFIX usr local DOPENC
  • 是否有替代方法或方法让 Rc> 限制 X 的可变性?

    use std rc Rc use std cell RefCell Don t want to copy for performance reasons struct LibraryData Fields Creates and muta
  • 将数组分配给结构体中的数组

    我正在尝试将一个数组分配给 typedef 结构的一个字段 但实际上找不到一种方法 我已经搜索过这个问题 但我似乎找到的只是 char 数组的答案 这不是我正在寻找的 我只是试图将一个数组分配给一个 int 数组 并寻找一种实用的方法下面的
  • 有没有快速的矩阵求幂方法?

    Is there any faster method of matrix exponentiation to calculate Mn where M is a matrix and n is an integer than the sim
  • 如何使用node在mongodb中插入长值?

    我需要在 mongo 中插入一个属性的 Long 值 var sequences this db collection sequences sequences insert id TEST SEQ value 1 done 但这是以整数形式
  • Java 正则表达式 String.matches 工作不一致

    我有一个正则表达式来检查字符串是否是数字 该格式的千位分隔符是空格 小数分隔符是点 小数点后部分是可选的 问题是 在某些时候 String matches 函数会停止按预期工作 以前有效的方法现在不再有效了 例如 JUnit 代码 impo