我写了这个正则表达式([0-9]{2}:){2}[0-9]{2},[0-9]{3} -> ([0-9]{2}:){2}[0-9]{2},[0-9]{3}
来匹配像00:16:31,600 -> 00:16:35,700
这样的srt时间格式,当我像这样使用它时它工作正常:someString.matches(timeSpanPattern)
但是当我在hasNext(pattern)
中使用它时像下面的代码一样,它总是返回false,我认为这是因为->
之前和之后的空格。是否有任何替代或代码来防止这种情况?我试过useDelimiter
函数,但它不起作用(也许我错误地使用了这个函数)
final String timeSpanPattern = "([0-9]{2}:){2}[0-9]{2},[0-9]{3} -> ([0-9]{2}:){2}[0-9]{2},[0-9]{3}";
.
.
.
Scanner i = new Scanner(System.in).useDelimiter("\n");
while (i.hasNext(timeSpanPattern)) {
line = i.next(timeSpanPattern);
forbiddenTimes.add(line);
}
.
.
.
答案 0 :(得分:3)
重新阅读您的问题,我发现了实际问题:
Scanner i = new Scanner(System.in).useDelimiter(System.lineSeparator());
UNIX系统上的行分隔符为"\n"
,Microsoft Windows系统上为"\r\n"
。
答案 1 :(得分:0)
useDelimiter
功能的使用不正确。你(i)应该以这种方式使用它:
Scanner i = new Scanner(System.in);
i.useDelimiter("\n");