我有
String b = "aasf/sdf/dfd/*";
Pattern.matches("[^ ]", b);
我一直在Patter.matches();
中返回false由于它匹配正则表达式,空格字符旁边的所有字符都不应该返回true?
答案 0 :(得分:1)
Pattern.matches
会尝试完全匹配模式..
因此,只有当单个非空格字符作为输入时,它才会返回true
。
就像使用\A[^ ]\z
其中\A
是输入的开头,\z
是输入结束..
如果要检查不包含空格的字符串,可以使用
input.matches("[^ ]*");
答案 1 :(得分:1)
不,因为你试图将整个字符串与非空格字符匹配。
String b = "aasf/sdf/dfd/*";
Pattern.matches("[^ ]*", b);
这个将返回true
答案 2 :(得分:1)
正如anirudh所说,模式匹配器的使用方式不同(请参阅其他答案的示例),我相信您尝试做的是以下内容:
String b = "aasf/sdf/dfd/*";
System.out.println("b.matches(\"[^ ]\") = " + b.matches("[^ ]"));
<强>输出强>
b.matches("[^ ]") = false
答案 3 :(得分:0)
Pattern.matches()
才会返回true
。你想要做的是看看模式是否出现在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
。