Java:模式、扫描仪示例不起作用

标签 java regex string

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

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/

相关文章:

Swift 正则表达式优化

使用 Boost Regex 的 C++ 正则表达式

java - 在 Spring 的单个项目中同时使用 XML 和注释配置是个坏主意吗?

java - 是否可以在没有打印对话框的情况下打印 Swing 组件?

java - 正则表达式与 & 符号不匹配

c - 在处理二进制文件时,fread 获得的字符比我在 c 中要求的要多

java - Java中的字符串乘法

javascript - 从带有 Node 的字符串中提取城市名称

java - 写入后无法从远程读取 Gremlin 数据

java - 当我们第二次写入文件时,用新内容替换文本文件的旧内容