Я просто пытаюсь захватить строку, окруженную статическим текстом. Я проиллюстрирую пример. Вот строка, я работаю с ...Извлечение группы захвата с использованием Regex
String idInfo = "Any text up here\n" +
"Here is the id\n" +
"\n" +
"?a0 12 b5\n" +
"&Edit Properties...\n" +
"And any text down here";
Или в довольно печати ...
Any text up here
Here is the id
?a0 12 b5
&Edit Properties...
And any text down here
И я использую следующий код, чтобы попытаться напечатать идентификационный номер .. .
Pattern p = Pattern.compile("Here is the id\n\n\?[a-z0-9]{2}([a-z0-9]{2}){2}\n&Edit Properties...);
Matcher m = p.matcher(idInfo);
String idNum = m.group(1);
System.out.println(idNum);
И я хочу, чтобы просто вывести идентификационный номер, поэтому выход я хочу для этого примера ...
a0 12 b5
Однако, когда я запускаю свой код, я получаю исключение «Нет соответствия». Что я делаю не так? Есть ли более простой и элегантный способ решения?
Ваш код отсутствует скобки для группы захвата вокруг ID тоже. Обнаружил это при тестировании. Я считаю, что это должно быть «Вот id \ n \ n \\? ([A-z0-9] {2} ([a-z0-9] {2}) {2}) \ n & Изменить свойства ... " верный? – user2150250
@ user2150250 Да, вы правы. Я пропустил, что мой код не возвращал результат, который вы описали в своем вопросе. Исправлено. – Pshemo