整数或双精度的正则表达式

时间:2013-08-24 04:55:02

标签: java regex

有一个字符串“12.2A12W99.0Z0.123Q9” 我需要找到3组:(double或int)(nondigit)(double或int) 所以在样本的情况下,我希望这种情况发生:
    matcher.group(1)=“12.2”
    matcher.group(2)=“A”
    matcher.group(3)=“12”

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

我完全不理解正则表达式,所以像我5那样的解释会很酷。

1 个答案:

答案 0 :(得分: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());
}