1

我写了这个正则表达式([0-9]{2}:){2}[0-9]{2},[0-9]{3} -> ([0-9]{2}:){2}[0-9]{2},[0-9]{3}来匹配 srt 时间格式00:16:31,600 -> 00:16:35,700,当我像这样使用它时它工作正常: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);
}
.
.
.
4

2 回答 2

3

重新阅读您的问题,我发现了实际问题:

Scanner i = new Scanner(System.in).useDelimiter(System.lineSeparator());

行分隔符"\n"在 UNIX 系统上,"\r\n"在 Microsoft Windows 系统上。

于 2013-05-17T10:52:43.367 回答
0

函数的使用useDelimiter不正确。您(i)应该以这种方式使用它:

Scanner i = new Scanner(System.in);
i.useDelimiter("\n");
于 2013-05-17T11:21:50.597 回答