가능하면 더 간단한 구분 기호를 사용하십시오. 그리고 저는 배심원 단련 "%"를 구분 기호로 사용하여 괜찮습니다. 정규 표현식 대신 String.split()
을 얻을 수 있습니다. 하지만 그럴 수 없다면 ...
Regexps! Matcher
을 사용하여이 구문을 분석 할 수 있습니다. 당신이 한 줄에 하나의 구분이 알고 있다면, 당신은 전체 라인 먹는 패턴 지정 입력이 긴 당신은 결과의 체인을해야하는 경우
String singleDelimRegexp = "(.*)(%[^%]*%)(.*)";
Pattern singleDelimPattern = Pattern.compile(singleDelimRegexp);
Matcher singleDelimMatcher = singleDelimPattern.matcher(input);
if (singleDelimMatcher.matches()) {
String before = singleDelimMatcher.group(1);
String delim = singleDelimMatcher.group(2);
String after = singleDelimMatcher.group(3);
System.out.println(before + "//" + delim + "//" + after);
}
을, 당신은 루프에서 Matcher를를 사용
String multiDelimRegexp = "%[^%]*%";
Pattern multiDelimPattern = Pattern.compile(multiDelimRegexp);
Matcher multiDelimMatcher = multiDelimPattern.matcher(input);
int lastEnd = 0;
while (multiDelimMatcher.find()) {
String data = input.substring(lastEnd, multiDelimMatcher.start());
String delim = multiDelimMatcher.group();
lastEnd = multiDelimMatcher.end();
System.out.println(data);
System.out.println(delim);
}
String lastData = input.substring(lastEnd);
System.out.println(lastData);
데이터 구조에 이들을 추가하면 파싱 된 입력을 모두 빌드하게됩니다.
입력시 실행 : http://ideone.com/s8FzeW
왜'%'에서 분할하지 않습니까? –
설명이 불완전하거나 예제가 잘못되었다고 생각합니다. 그것을 수정할 수 있습니까? –
@ BheshGurung : 나는 그것의 버그를 수정하겠습니다. –