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

group()在java.util.regex.matcher中?[副本]

喻高寒
2023-03-14
String pattern = "(.*)(\\d+)";
while(m.find()){
        System.out.println(m.group(1));
        System.out.println(m.group(2));
     } 

输入:

This order was placed for QT3000! OK?

输出:

This order was placed for QT300
0

为什么第一行输出不包括第三个0即QT3000?为什么第二行输出它不打印3000?

共有1个答案

丰岳
2023-03-14

这是因为.*是贪婪的,只给组\\d+留一个\d。使它不是贪婪的.*?您就会得到您想要的。

.*将匹配到最后一个字符,然后开始回溯,直到找到\d为止。因此,当它从3000中封闭0而回溯时,它就停止在那里。

.*?将在\d的第一个实例即3处停止。因此,您将在第二组中获得3000

 类似资料:
  • 问题内容: 我试图计算一个字符串中有多少个匹配模式。我是使用java.util.regex的新手,我正计划使用matcher.groupCount()来获取匹配组的数量。由于根据文档,它返回捕获组的数量。 返回此匹配器模式中的捕获组数。 零组按照惯例表示整个模式。它不包括在此计数中。 保证小于或等于此方法返回的值的任何非负整数都是该匹配器的有效组索引。 这是我的问题的简化示例: 输出为0。我误解了

  • 问题内容: 该站点产生结果,但是使用SELECT COUNT和SELECT查询以及GROUP BY具有两个不同的结果计数。这可能是由于phpmyadmin中显示的错误,而不是网站上的错误。 查询: PhpMyAdmin提供以下错误: 1055-‘main.users.type’不在GROUP BY中 在阅读MySQL文档时,我仍不清楚必须解决的问题。我似乎无法掌握这一点。 问题答案: 您需要有一个

  • 修复我的函数,使用聚合查询,计算每个用户的推文数量,将它们添加到数组中,并返回推文最多的5个用户。 使用聚合查询,计算每个用户的tweet数量。在相同的阶段,使用累积每个用户的所有tweet文本。 将你的输出限制在推特最多的5个用户。 结果文档应仅包括以下字段: (用户的屏幕名称), (为用户找到的推文数量), (为用户找到的tweet文本列表) 为了实现前面的目标,我正在测试以下代码: 首先,我

  • 描述 (Description) java.time.MatchResult.group(int group)方法返回在上一个匹配操作期间由给定组捕获的输入子序列。 声明 (Declaration) 以下是java.time.MatchResult.group(int group)方法的声明。 int group(int group) 参数 (Parameters) group - 此匹配器模式

  • 问题内容: 我试图找到一种解决方案,如何从具有相同值的中获取所有字段。 例如 所以,我要的是做这样的事情。预期结果将是和。如果有人可以指出我如何使用本机命令或使用该命令,那将非常棒。 谢谢。 问题答案: 你可以这样做 在名为script.lua的lua脚本中 lua通过序列key0,val0,key1,val1等获取哈希值… 然后您可以这样称呼它: 您将拥有 : 有关eval函数的更多信息,请参见

  • 问题内容: T_TABLE2 的结构是 我在firebird中使用SQL编辑器测试了我的查询。查询是 但我在分组时遇到了这个错误。 问题答案: 您必须来自MySQL。MySQL-IMHO令人误解,错误且以一种黑变的,不可预测的方式-允许您指定部分查询,而数据库引擎会尝试从其余查询中找出您未分组的列中的 哪个 值想。另一方面,标准SQL(Firebird和大多数其他RDBMS)则不这样做。它要求将任