これが私の問題です。私はこれを持っています:
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()){
....
}
ただし、一致しません。何故ですか?括弧内の数字を取得しようとしています。
何を試すべきですか?
Matcher.matches()
完全な文字列に一致します。を使用Matcher.find
して、個々の整数を一致させることができます。
while (m.find()) {
System.out.println(m.group(1));
}
Matcher.matches
正規表現が文字列全体に一致するかどうかを示します。あなたの文字列はすべての数字ではありません。文字、ドット、等号、および角かっこが含まれます。したがって、マッチャーは一致しません。
あなたがしたいMatcher.find()
。部分一致を検索します。 Matcher.group
次に、入力文字列の一致した部分を取得できます。
このMatcher.matches()
メソッドは文字列全体に対して照合を試みることに注意してください。
Matcher.find()
代わりに使用したい。
正規表現が文字列と一致しないため、\d の前 (および後) に他の文字が一致します。