当前位置: 首页 > 知识库问答 >
问题:

Java regex matcher不返回匹配项[重复]

赵超
2023-03-14
Pattern pattern = Pattern.compile("\\du\\d\\d{0,1}_x(32|64)");
Matcher matcher = pattern.matcher("windows_6u31_x32.jar");
System.out.println(matcher.group(0));

我尝试进入调试模式,它似乎无法提取字符串的特定部分。我做错了什么?我的regex错了吗?它似乎与我尝试过的所有在线regex构建器/测试器相匹配。

共有1个答案

习海
2023-03-14

在调用matcher#group之前,需要调用matcher#find(或matcher#matches)。

否则,匹配过程永远不会发生,并且会引发IllegalStateException

从文档中:

Pattern pattern = Pattern.compile("\\du\\d\\d{0,1}_x(32|64)");
Matcher matcher = pattern.matcher("windows_6u31_x32.jar");
// executing matcher
if (matcher.find()) {
    System.out.println(matcher.group(0));
}
6u31_x32
 类似资料:
  • 问题内容: 我正在使用Elasticsearch的php库对我的网站进行索引和查找文档。这是用于创建索引的代码: 然后,我使用curl XPUT将文档添加到索引,并使用XGET查询索引。除了返回结果时跨索引的单数和复数查询词不匹配之外,这种方法效果很好。例如,当我搜索“讨论”时,不返回“讨论”的匹配项,反之亦然。为什么会这样呢?我认为这是默认情况下在Elasticsearch中处理的。为了匹配单数

  • 问题内容: 我正在用于在运行时更新json配置文件。有时,当模式在json文件中不匹配时,仍然会以返回码0退出。 返回0表示成功完成,但是如果找不到正确的模式并更新文件,为什么返回0?有没有解决方法? 谢谢! 问题答案: 如@cnicutar所评论,命令的返回码表示命令是否成功执行。与您在代码/脚本中实现的逻辑无关。 因此,如果您有: sed将返回,但是如果您编写一些语法/表达式错误,或者输入/文

  • 我正在创建一个用户可以登录的网站。当他们创建帐户时,我将哈希密码保存在数据库中。我正在尝试使用password_verify()来确认密码匹配,但它返回false。 为了确认它们匹配,我打印出用户输入的哈希版本和存储在数据库中的哈希密码。我知道一个常见的问题是数据库密码字段对于散列密码来说太小,但我尝试将其设置为VARCHAR(256)和TEXT,以确保存储整个散列密码。 我希望password_

  • 我有两张桌子: Product\u表 Productbreak\u表 我的目标是只获取不在productbreak_table的和日期之间的产品 结果应该是:

  • 我有一个C#代码,使用Elastic搜索类型,它将匹配两个字段。我用的是NEST软件包。 问题是,无论我传入什么文本,它都会返回所有结果。我错过了什么?