Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java模式新线问题_Java_Regex - Fatal编程技术网

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%s
findInLine
遇到换行符时停止(顾名思义):

您应改为使用:

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<