Поскольку вы сопоставляете что-либо, кроме текста description
, вы можете просто разрешить точке совпадать с новыми строками Pattern.DOTALL
:
description:\s(.*)
Итак, в Java:
Pattern regex = Pattern.compile("description:\\s(.*)", Pattern.DOTALL);
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
ResultString = regexMatcher.group(1);
}
Единственное семантическое отличие вашего регулярного выражения (не считая того факта, что оно не унесет ваш стек), заключается в том, что оно также будет соответствовать, если то, что следует после description:
, не будет содержать символ новой строки. Кроме того, ваше регулярное выражение не будет соответствовать последней строке файла, если оно не заканчивается новой строкой, моя будет. Какое поведение предпочтительнее - ваше решение.
Конечно, ваша функциональность может эмулироваться следующим образом:
description:\s(.*\r\n)
но я сомневаюсь, что это действительно то, что вы хотите. Или это?