消耗任何引用输入的定界符

Delimiter that consumes any quoted input

我正在使用 Scanner 使用定界符读取文件,如下所示:

.useDelimiter("[^a-zA-Z]+"); 

但我想知道可以"skipped"引用文件部分的方法。

例如,如果文件包含:

hello world "such a lovely day"
take a walk through the field

我希望扫描器return这些标记:

hello
world
take
a
walk
through
the
field

"..." 视为分隔符之一:

.useDelimiter("([^a-zA-Z"]("(.*?)")?)+");

一些测试代码:

String input = "hello world \"such a lovely day\"\ntake a walk through the field";
Scanner scanner = new Scanner(input).useDelimiter("([^a-zA-Z\"](\"(.*?)\")?)+");
while(scanner.hasNext()) {
    System.out.println(scanner.next());
}

输出:

hello
world
take
a
walk
through
the
field