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

Java regex匹配器没有按预期分组

姚阳德
2023-03-14
.*?(\\d+.*?\\d*).*?-.*?(\\d+.*?\\d*).*?
Pattern pattern = Pattern.compile(".*?(\\d+.*?\\d*).*?-.*?(\\d+.*?\\d*).*?");
Matcher matcher = pattern.matcher("13.9 mp - 14.9 mp");
matcher.matches();
matcher.group(1) // this should be 13.9 but it is 13 instead
matcher.group(2) // this should be 14.9 but it is 14 instead

你知道我错过了什么吗?

共有1个答案

韩乐湛
2023-03-14

您当前的模式有几个问题。正如其他人所指出的,如果你想让点变成文字点,你的点应该用两个反斜杠转义。我想要用来匹配一个可能有或可能没有十进制分量的数字的模式是:

(\\d+(?:\\.\\d+)?)

这与以下内容相匹配:

\\d+          one or more numbers
(?:\\.\\d+)?  followed by a decimal point and one or more numbers
              this entire quantity being optional

完整代码:

Pattern pattern = Pattern.compile(".*?(\\d+(?:\\.\\d+)?).*?-.*?(\\d+(?:\\.\\d+)?).*?");
Matcher matcher = pattern.matcher("13.9 mp - 14.9 mp");
while (matcher.find()) {
    System.out.println(matcher.group(1));
    System.out.println(matcher.group(2));
}
13.9
14.9
 类似资料:
  • 我正在开发一个graqphqlapi,它通过Mongoose从MongoDB获取数据。现在我遇到的问题是GraphQL不使用查询来解析字段,而是使用字段解析程序,因为没有设置ID,所以字段解析程序无法工作。 TypeDefs: 解析程序: 功能: 查询: 结果:

  • 问题内容: 我正在尝试模拟一些mongo类,以便不需要连接(相当标准的东西),但是以下代码给我带来了问题: 运行这个得到我: org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 参数匹配器的无效使用! 预期0个匹配器,记录1个: 在… GridFileManagerTest.beforeClass(GridFileManag

  • 最近,我为jaxb生成的元素做了一个自定义匹配器,遇到了这样的场景: 先决条件: 我有一个自定义Matcher,它扩展了BaseMatcher,覆盖了方法describeTo和DescribeMatch(当然还有matches…) 我使用的是assertThat(actualObject,而不是MyMatcherStaticRunMethod(expectedObject)) 当断言失败时,结果是

  • 我正在尝试解析下面的XML文件并基于它创建一个JTree。 “窗口01”将添加到根节点“对象列表”,但“页面01”节点不会显示在“窗口01”节点下。下面给出了使用的源代码。请帮忙!!! 这是主课。编译时不会显示错误或警告。

  • 我在使用R的group_by和SUMMARY函数时遇到了一些问题,我想知道你们是否可以帮我一些忙。我有一张类似的表格: 我试图使用dplyr的group_by和SUMMARY来找到频率列的平均值。下面是我的示例代码: 我所期望的是,一个表格被吐出来,分解按单个类别分组的平均频率,如下所示: 但是,我收到的是一个按类别分组的表,每个类别接收整个表的平均值,如下所示: 有什么线索吗?我应该说我是初学者

  • 现在,在我的drools项目中,我在单独的DRL文件中有两组规则,它们由议程组分割。对于议程组“preCheck”,我将该议程组中的每个规则的自动聚焦设置为true。例子: 对于另一个议程组-“default规则”-规则没有设置自动焦点属性。示例: 在通过RESTAPI调用规则时,我还试图通过JSON负载将焦点设置为“preCheck”议程组。例子: 然而,在执行规则时,似乎首先要评估“defau