Используйте это регулярное выражение:
Pattern pattern = Pattern.compile("Class: (.+?)\nFrom: (.+?) To: (.+?)\nOccures: (.+?) In: (.+?) (.+?)");
Matcher matcher = pattern.matcher(yourInputString);
if (matcher.find())
{
String data1 = matcher.group(1);
String data2 = matcher.group(2);
String data3 = matcher.group(3);
String data4 = matcher.group(4);
String data5 = matcher.group(5);
String data6 = matcher.group(6);
} else
{
// String didn't match the specified format
}
Пояснение:
.+?
будет соответствовать любому символу в течение неопределенного времени, но не будет жадным.
()
, использование скобок создаст группу. Группе присваивается индекс, начинающийся с 1 (поскольку группа 0 соответствует полному совпадению)
Итак, (.+?)
будет создавать группы любого персонажа.
И что делает сопоставитель, ищет весь шаблон где-то во входной строке. Но так как вы указали формат, мы точно знаем, как будет выглядеть вся ваша строка. Единственное, что вам нужно сделать, это скопировать формат и заменить данные, которые вы хотите извлечь, на « что-то » (.+?
), индекс которого вы задаете, создавая его группу.
После этого средство сопоставления попытается найти шаблон (выполнено matcher.find()
), и вы спросите их, каково содержание групп от 1 до 6.