Мне нужно найти строку между двумя настраиваемыми заголовками.Поиск строки в строке с символами новой строки ( n)
Ниже приведена строка, с которой я работаю, и хочу, чтобы она могла извлекать часть строки между «--- BEGIN CGP MESSAGE --- \ n» и «--- BEGIN CGP KEY --- \ n ", или любой другой другой заголовок.
---BEGIN CGP MESSAGE---\n
EoEZ1Qio8/BY/vl9iGblkg==\n
---BEGIN CGP KEY---\n
dOo23Ar23p4v6So70O65E6ImFnzuYrVro3nXFi5s4RUdczLITEDNcUefRiOgyEKWJKR/CW1DeLITPlT7RjV3FQRIz8sIdsW8Zuq9E4u6ad5n+EPxC80IfhdrThJPs/T6yuaVW3s+45mnyGMHvhEatwwkqtJZydfBKz3qb/JUkf0=\n
---END CGP MESSAGE---\n
Везде я выглядел предложил регулярное выражение, и он часто отформатирован, как это (я заменил пример они использовали с параметрами, которые я хотел)
String str = sb.toString();
Pattern pattern = Pattern.compile("---BEGIN CGP MESSAGE---(.*?)---BEGIN CGP KEY---");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1).toString());
}
(С.Б. является строка-строитель, который построил строка выше.)
К сожалению, когда я запускаю этот код, он не печатает строку «EoEZ1Qio8/BY/vl9iGblkg ==», которую я хочу. У меня нет никаких ошибок; он просто ничего не печатает в консоли.
Я не знаю почему, но использование этого точного кода регулярного выражения не будет работать для меня. Вот почему я публикую этот вопрос, решения, которые я пробовал с этого сайта, не работают. Другие ответы часто являются вариантами этого кода или просто не работают для моих целей.
О, и я не могу использовать функцию разделения строк, которая полагается на целое местоположение символа. Строки между заголовками будут иметь разную длину, и поэтому программа должна быть в состоянии разместить для нее.
Вот, спасибо. – Ryuluce
@Ryuluce Добро пожаловать. –
Что такое хороший способ создать строку регулярного выражения. Я имею в виду, что хочу иметь возможность вместо того, чтобы печатать «EoEZ1Qio8/BY/vl9iGblkg ==», использовать его как строковую переменную. определение строковой переменной в цикле «while» не работает, конечно. – Ryuluce