Java模式新线问题
在阅读Java模式新线问题,java,regex,Java,Regex,在阅读模式的文档时,它将\s声明为空白字符:[\t\n\x0B\f\r]。那么,为什么下面的第二个扫描器返回null,如何使模式与新行字符一起工作 import java.util.*; public class Main { public static void main(String[] args) { String pattern = "\\s*a"; Scanner scanner1 = new Scanner(" \t a")
模式的文档时,它将\s
声明为空白字符:[\t\n\x0B\f\r]
。那么,为什么下面的第二个扫描器返回null
,如何使模式与新行字符一起工作
import java.util.*;
public class Main
{
public static void main(String[] args)
{
String pattern = "\\s*a";
Scanner scanner1 = new Scanner(" \t a");
Scanner scanner2 = new Scanner(" \t\n a");
System.out.println(scanner1.findInLine(pattern));
System.out.println(scanner2.findInLine(pattern));
}
}
输出:
a
null
findInLine
遇到换行符时停止(顾名思义):
您应改为使用:
String pattern=“\\s*a”;
扫描仪scanner1=新扫描仪(“\t a”);
Scanner scanner2=新扫描仪(“\t\n a”);
System.out.printf(“>%s%sfindInLine
遇到换行符时停止(顾名思义):
您应改为使用:
String pattern=“\\s*a”;
扫描仪scanner1=新扫描仪(“\t a”);
Scanner scanner2=新扫描仪(“\t\n a”);
System.out.printf(“>%s%当然你是对的。我不敢相信我错过了。谢谢。你当然是对的。我不敢相信我错过了。谢谢。
" \t\n a"
^^^^
|
+-- this is where findInLine(...) searches for the pattern: `\s*a`
String pattern = "\\s*a";
Scanner scanner1 = new Scanner(" \t a");
Scanner scanner2 = new Scanner(" \t\n a");
System.out.printf(">%s<\n\n", scanner1.findInLine(pattern));
System.out.printf(">%s<", scanner2.findWithinHorizon(pattern, 0));
> a<
>
a<