3

これが私の問題です。私はこれを持っています:

String data = "java.awt.Color[r=168,g=228,b=160]" //example this changes.
Pattern p = Pattern.compile("(\\d+)");
Matcher m = p.matcher(data);
if(m.matches()){
    ....
}

ただし、一致しません。何故ですか?括弧内の数字を取得しようとしています。

何を試すべきですか?

4

6 に答える 6

11

Matcher.matches()完全な文字列に一致します。を使用Matcher.findして、個々の整数を一致させることができます。

while (m.find()) {
  System.out.println(m.group(1));
}
于 2012-10-01T18:59:01.323 に答える
4

Matcher.matches正規表現が文字列全体に一致するかどうかを示します。あなたの文字列はすべての数字ではありません。文字、ドット、等号、および角かっこが含まれます。したがって、マッチャーは一致しません。

あなたがしたいMatcher.find()。部分一致を検索します。 Matcher.group次に、入力文字列の一致した部分を取得できます。

于 2012-10-01T18:57:46.647 に答える
3

このメソッドは、入力全体matchesに対して正規表現を照合しようとします。

findメソッドとgroupメソッドを組み合わせて、入力内で一致を見つけて使用します。

while (m.find())
    System.out.println(m.group());
于 2012-10-01T18:58:10.137 に答える
3

このMatcher.matches()メソッドは文字列全体に対して照合を試みることに注意してください。

Matcher.find()代わりに使用したい。

于 2012-10-01T18:58:22.670 に答える
1

正規表現が文字列と一致しないため、\d の前 (および後) に他の文字が一致します。

于 2012-10-01T18:58:08.363 に答える