2013-01-23 65 views
1

我試圖捕獲命令'\'可用於擴展命令到多行。因此,一個可能的分隔符可以是:Java掃描儀獲取下一個分隔符

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); 

非但沒有T1和D1,findInLine,這是應該忽略掃描儀的分隔符的級聯,當模式是一樣的分隔符返回null!任何人都能解釋這種奇怪的行爲嗎

回答

0

想通了如何得到我想要的行爲,但我仍然不明白爲什麼我試圖沒有工作。

的解決方案是使用負向後看不消耗非 - 「\」:

Pattern assignment = Pattern.compile("(?<!\\\\)\\n");