Я имею дело с форматированием текста из открытого текста (HL7) и переформатирую его для отображения. Примером одного является \.sp5\
. Это означает поставить в пять разрывов строк.
Так что я думаю, что хотел бы сделать что-то вроде этого:
Pattern.compile("\\\.sp(\d+)\\").matcher(retval).replaceAll("\n{$1}");
Моя среда IDE сообщает мне, что на \d
есть недопустимая escape-последовательность, и я не уверен, что аргумент replaceAll выполнит то, что я ожидаю. Я думаю, что регулярное выражение описывает «обратную косую черту с одной или несколькими цифрами обратной косой черты», и я хочу, чтобы замена произнесла «вставьте разрывы строки $ 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);
}