Java:Pattern,Scanner示例不起作用

时间:2010-10-01 14:53:15

标签: java regex string

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

String same = "==== Instructions ====";
Pattern title4 = Pattern.compile(same);
Scanner scan = new Scanner(same);
System.out.println(scan.hasNext(same));

返回:

false

2 个答案:

答案 0 :(得分:5)

默认的扫描仪分隔符是空格。 kuropengin说,hasNext(...)方法负责分隔符,因此会将字符串拆分为空格,然后首先检查====

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

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 ====

答案 1 :(得分:2)

Java java.util.Scanner根据某些分隔符分解其输入。默认情况下,分隔符模式与空格相匹配,因此在这种情况下您对扫描仪的输入不会保持不变,并且您将从扫描仪中获得“====”,“指令”,“====”。