我很好奇为什么这种模式不起作用。
String same = "==== Instructions ====";
Pattern title4 = Pattern.compile(same);
Scanner scan = new Scanner(same);
System.out.println(scan.hasNext(same));
返回:
false
最佳答案
默认的 Scanner 分隔符是空格。 hasNext(...)方法负责分隔符,因此它将在空格处拆分字符串并首先检查 ====
,正如 kuropengin 所说。
尽管如此,您的代码似乎有错字,因为您根本没有使用定义的模式。您的代码可能应该是:
String same = "==== Instructions ====";
Pattern title4 = Pattern.compile(same);
Scanner scan = new Scanner(same);
System.out.println(scan.hasNext(title4));
但您正在寻找的是 findInLine(...)方法。它会在搜索匹配项时忽略定界符。以下代码
String same = "==== Instructions ====";
Pattern title4 = Pattern.compile(same);
Scanner scan = new Scanner(same);
System.out.println(scan.findInLine(title4));
将返回:
==== Instructions ====
关于Java:模式、扫描仪示例不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3840315/