这是我的问题。我有这个:
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 匹配之前(和之后)还有其他字符。
matches()
方法尝试匹配整个字符串,但您只需要在其中出现数字。您需要使用find()
方法,您可能需要使用while
运算符而不是if
因为它会转移matcher
到下一个匹配项。