我编写了此正则表达式([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);
}
.
.
.

最佳答案

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

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


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

关于java - Java扫描器hasnext(pattern)与空白冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16606999/

10-09 19:22