我正在尝试从具有自定义行尾字符序列的用户处读取多行控制台输入。为此,我使用java.util.scanner类和一个自定义regex来定义所需的输入。
但是扫描器总是匹配最后一行,并且忽略前面包含行终止符号的行。在一个在线regex测试网站上,我发现为了包含行终止符号,我必须使用单行模式。
所以我修改了我的regex以包含“(?s)”,它在在线regex测试仪上运行良好,但在我的代码中失败。下面是一个简单的工作示例:
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
System.out.println("Input that ends with the number 4:");
input.findWithinHorizon(".*4",0);
System.out.println("Input that ends with the number 4 and uses single line mode:");
input.findWithinHorizon("(?s).*4",0);
}
}
第一个正则表达式在输入数字4后终止,但第二个正则表达式似乎从未终止。不知怎的“?s”旗好像把它弄坏了。有什么想法吗?
暂无答案!
目前还没有任何答案,快来回答吧!