Java:Pattern,Scanner示例不起作用

six*_*ude 2 java regex string

我很好奇为什么这种模式不起作用.

String same = "==== Instructions ====";
Pattern title4 = Pattern.compile(same);
Scanner scan = new Scanner(same);
System.out.println(scan.hasNext(same));
Run Code Online (Sandbox Code Playgroud)

收益:

false
Run Code Online (Sandbox Code Playgroud)

Mic*_*Sim 5

默认的扫描仪分隔符是空格.该hasNext(...)方法需要照顾的分隔符,因此它会在分裂空格和反对首先检查字符串====,如kuropengin说.

尽管如此,您的代码中似乎有一个拼写错误,因为您根本不使用定义的模式.您的代码可能应该是:

String same = "==== Instructions ====";
Pattern title4 = Pattern.compile(same);
Scanner scan = new Scanner(same);
System.out.println(scan.hasNext(title4));
Run Code Online (Sandbox Code Playgroud)

但是你要找的是findInLine(...)方法.搜索匹配时它会忽略分隔符.以下代码

String same = "==== Instructions ====";
Pattern title4 = Pattern.compile(same);
Scanner scan = new Scanner(same);
System.out.println(scan.findInLine(title4));
Run Code Online (Sandbox Code Playgroud)

将返回:

==== Instructions ====
Run Code Online (Sandbox Code Playgroud)