일반 텍스트 메시지 (HL7)에서 텍스트 서식을 처리하고 표시를 위해 다시 포맷합니다. 하나의 예는 \.sp5\
입니다. 이것은 다섯 줄 바꿈을 의미합니다. 문자열 패턴을 N 번 찾아서 바꿉니다. 여기서 N은 패턴에 정의되어 있습니다.
Pattern.compile("\\\.sp(\d+)\\").matcher(retval).replaceAll("\n{$1}");
내 IDE가 \d
에서 잘못된 이스케이프 시퀀스가 있음을 말해되고 완전히 대체 인수 할 것인지 확실하지 않다 내가 기대하는 것. 제 생각에 정규 표현식은 "backslash dot s p one-or-more-digits backslash"를 기술하고 있다고 말하면서 대체 단어가 "$ 1 줄 바꿈"이라고 말하고 싶습니다.
어떻게하면됩니까? 모든 슬래시 두 배로 할 필요 자바
Pattern verticalSpacesPattern = Pattern.compile("\\\\\\.sp(\\d+)\\\\", Pattern.MULTILINE);
Matcher verticalSpacesMatcher = verticalSpacesPattern.matcher(retval);
while (verticalSpacesMatcher.find()) {
int lineBreakCount = Integer.parseInt(verticalSpacesMatcher.group(1));
String lineBreaks = StringUtils.repeat("\n", lineBreakCount);
String group = verticalSpacesMatcher.group(0);
retval = StringUtils.replace(retval, group, lineBreaks);
}
문제를 처리하기위한 일반적인 패턴 때문에 허용됩니다. Dave DiFranco의 정규식을 사용해야했습니다. sol'n으로 편집 된 원본 게시물 – Freiheit