我正在尝试捕获可以使用“\”将命令扩展到多行的命令。因此,可能的分隔符可以是:
Pattern assignment = Pattern.compile("[^\\\\]\\n");
当然,这有将'\n' 之前的最后一个非'\' 字符切掉的问题。我试图通过尝试以下方法来恢复该角色:
由于扫描仪的输入形式为:T1 D1 T2 D2 T3 D3.... 其中 T# 和 D# 分别对应于标记和分隔符编号“#”,我认为这会起作用:
Pattern p = Pattern.compile("\\\\?\\s+");
String residue = file.findInLine(assignment);
String curToken = file.next().trim();
if(residue == null)
residue = "";
else
residue = residue.trim();
Scanner tokens = new Scanner(curToken + residue).useDelimiter(p);
findInLine 应该忽略扫描仪的分隔符,而不是获取 T1 和 D1 的连接,而是在模式与分隔符相同时返回 null!谁能解释这种奇怪的行为?