2013-01-23 3 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"); 
: '\'-

이 솔루션은 비를 소비하지 않는 부정적인 모습 숨김을 사용하는 것입니다

관련 문제