可以使用该模式将regex find all应用于每一行
'.*?'|\S+
:
String line = "ADD 'Cordless Screwdriver' 30 1 2";
String[] matches = Pattern.compile("'.*?'|\\S+")
.matcher(line)
.results()
.map(MatchResult::group)
.toArray(String[]::new);
System.out.println(Arrays.toString(matches));
// [ADD, 'Cordless Screwdriver', 30, 1, 2]
您可以将上述逻辑应用于文件中的每一行。但是,您应该在循环之外定义模式,这样就不必为每一行重新编译。
您的更新代码:
File inputFile = new File("src/edu/iu/c212/resources/input.txt");
FileReader inputReader = new FileReader(inputFile);
BufferedReader bri = new BufferedReader(inputReader);
Pattern r = Pattern.compile("'.*?'|\\S+");
String y;
while ((y = bri.readLine()) != null) {
List<String> items = new ArrayList<>();
Matcher m = r.matcher(y);
while (m.find()) {
items.add(m.group());
}
// use the list here...
}