2013-08-24 46 views
0

有一个字符串“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这样解释会很酷。

+3

在网上搜索时,返回的第一个条目:[匹配浮点数用正则表达式(http://www.regular-expressions.info/floatingpoint.html),并回答您的问题 –

回答

1

请尝试以下代码: - 您的正则表达式仅与数字字符匹配。也要匹配小数点,您将需要:

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

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

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

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

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()); 
} 
+2

什么是':-'?我不能这样旋转我的嘴巴。 –

+0

非常感谢你这样做,但我希望它能够对付整数和双打,而不仅仅是双打。有没有办法写一个正则表达式来做到这一点? – zvory

+0

刚才我编辑的答案,让我知道您的反馈 –