Java正则表达式未找到所有结果
使用Java 8,我有以下代码片段:Java正则表达式未找到所有结果,java,regex,java-8,Java,Regex,Java 8,使用Java 8,我有以下代码片段: 在这里: 可搜索的文本如下: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ORA-28040: No matchi
在这里: 可搜索的文本如下:
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ORA-28040: No matching authentication protocol
如您所见,在可搜索的文本中有3次出现“异常”一词。然而,Java只找到了其中的两个
代码的输出如下所示:
2
关于这一点的另一条信息是,searchString变量来自用户
我的问题是关于比赛的数量。Java在使用正则表达式时似乎缺少一些匹配项。我提供的文本来自一个更大的文件,这不是第一个被遗漏的文本,但这是我关注的一个,希望能有一些关于在哪里查找的提示。这是怎么回事?为什么Java缺少一些匹配项?我是否应该使用更精确的正则表达式搜索
为了帮助那些不熟悉searchString变量中“(?im)”的人,我找到了一个资源。发现了问题,它不在我发布的代码中,因为这是专有代码,无法在公共域中发布。但是基本上,searchString没有被正确地发送到模式编译器,“(?im)”在到达之前被剥离。谢谢大家的帮助。它为我输出了3个。尝试发布更完整的代码摘录,而不是片段?使用
matcher.group()
使用Pattern.compile的两个参数版本指定标志可能更安全。此外,用户输入应该通过Pattern.quote()传递不知道为什么只返回2。问题不是最小的、完整的和可验证的。见通过初始化searchString
并将searchable.getText()
更改为searchText
并对其进行初始化,编写一个小的测试片段,就很容易实现可验证性。这也考虑到了最小和完整的问题。这会让你不发表这个问题,因为代码返回3。谢谢大家的反馈,它帮我指出了正确的方向。另外,@Andreas感谢您在以后的帖子中为我指出该资源。
(?im)Exception
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ORA-28040: No matching authentication protocol
2