我有
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("[^ ]*");
不,因为您尝试将整个字符串与非空格字符匹配。
String b = "aasf/sdf/dfd/*";
Pattern.matches("[^ ]*", b);
这个将返回 true
正如 anirudh 建议的那样,模式匹配器的使用方式不同(请参阅其他答案的示例),我相信您尝试做的是以下内容:
String b = "aasf/sdf/dfd/*";
System.out.println("b.matches(\"[^ ]\") = " + b.matches("[^ ]"));
输出
b.matches("[^ ]") = false
Pattern.matches()
true
仅当整个字符串与正则表达式匹配时才返回。您要做的是查看该模式是否出现在String
. 你需要使用Matcher.find()
它。
例如,
String testStr = "aasf/sdf/dfd/*";
Pattern patt = Pattern.compile("[^ ]");
Matcher m = patt.matcher(testStr);
while (m.find()) {
System.out.println(m.group(0));
}
这将打印所有匹配项。如果您只需要知道是否找到模式,只需检查 if m.find()
is true
。