1

文字列 "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+) を整数または double に対して一致するものに変更しようとしています。

私は正規表現をまったく理解していません。

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 に答える