在Java中遇到了正则表达式匹配的奇怪行为。第一个输出命令按预期打印true
,但当相同的字符串被打包到Scanner
中时,输出为false
。我做错了什么?
public static void main(String[] args) {
Pattern p = Pattern.compile(" *\\[");
System.out.println(p.asPredicate().test("[]")); //true
Scanner s = new Scanner("[]");
System.out.println(s.hasNext(" *\\[")); //false
}
s.hasNext(p)
。 - logi-kalPattern.compile(myRegex).asPredicate().test(myString)
在myString
中搜索myRegex
的出现,而new Scanner(myString).hasNext(myRegex)
则检查整个myString
的内容是否与myRegex
匹配。 - logi-kal