1

有一个字符串“12.2A12W99.0Z0.123Q9”我需要找到3组:(双精度或整数)(非数字)(双精度或整数)所以在示例的情况下,我希望发生这种情况:
matcher.group (1) = "12.2"
matcher.group (2) = "A"
matcher.group (3) = "12"

我当前的正则表达式仅与整数匹配:“^(\d+)(\D)(\d+)” 所以我希望将组 (\d+) 更改为与整数或双打匹配的内容。

我根本不懂正则表达式,所以像我 5 岁那样解释会很酷。

4

1 回答 1

1

试试下面的代码:-您的正则表达式只匹配数字字符。要也匹配小数点,您还需要:

Pattern.compile("\\d+\\.\\d+")

private Pattern p = Pattern.compile("\\d+(\\.\\d+)?");

这 。被转义,因为这将在未转义时匹配任何字符。

注意:这只会匹配带有小数点的数字,这就是您在示例中所拥有的。

private Pattern p = Pattern.compile("\\d+(\\.\\d+)?");

public void testInteger() {
    Matcher m =p.matcher("10");

    assertTrue(m.find());
    assertEquals("10", m.group());
}

public void testDecimal() {
    Matcher m =p.matcher("10.99");

    assertTrue(m.find());
    assertEquals("10.99", m.group());
}
于 2013-08-24T05:21:01.250 回答