String b = "aasf/sdf/dfd/*";
Pattern.matches("[^ ]", b);
在Patter.matches我不断收到返回false();
因为它匹配正则表达式,所有字符旁边的空格字符,不应该返回true吗?
String b = "aasf/sdf/dfd/*";
Pattern.matches("[^ ]", b);
在Patter.matches我不断收到返回false();
因为它匹配正则表达式,所有字符旁边的空格字符,不应该返回true吗?
Pattern.matches
会尝试完全匹配模式..
那么它将返回true
只有当你有一个单非空格字符作为输入。
它就像使用\A[^ ]\z
其中\A
输入的开头和\z
输入端..
如果你想检查字符串,不包含空格,你可以使用
input.matches("[^ ]*");
Pattern.matches()
返回true
只有当整个字符串匹配re GEX。你想要做的是看看模式是否出现在String
的任何地方。你需要使用Matcher.find()
。
e.g,
String testStr = "aasf/sdf/dfd/*";
Pattern patt = Pattern.compile("[^ ]");
Matcher m = patt.matcher(testStr);
while (m.find()) {
System.out.println(m.group(0));
}
这将打印的所有比赛。如果您只需要知道是否找到了某种模式,请检查m.find()
是否为true
。
由于anirudh建议,模式匹配器的用法不同(例如参见其他答案),我相信,你所要做的是以下几点:
String b = "aasf/sdf/dfd/*";
System.out.println("b.matches(\"[^ ]\") = " + b.matches("[^ ]"));
输出
b.matches("[^ ]") = false
@JungJooç编辑 – Anirudha
哦,傻我,我刚刚通过一本书 – JungJoo
@JungJoo看到[this](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern。 html)。它具有java支持的所有不同模式...看看'^','$','\ A','\ z'和他们的区别 – Anirudha