Руководство по началу работы. Фиксация regex группы. Несоответствие группам
Иногда желательно группировать выражение, не отмечая их как группа кадра. Вы можете сделать это, включая выражение в скобках ?: как первые два символа. Например, если бы мы хотели переформатировать имена некоторых людей, игнорируя вторые имена если таковые вообще имеются, мы могли бы:
names = [
"Graham James Edward Miller",
"Andrew Gregory Macintyre"
]
printClosure = {
matcher = (it =~ /(.
*?)(?: .+)+ (.*)/); // notice the non-matching group in the middle
if (matcher.matches())
println(matcher[0][2]+", "+matcher[0][1]);
}
names.each(printClosure);
Должен вывести:
Miller, Graham
Macintyre, Andrew
Таким образом, мы всегда знаем, что фамилия - вторая matcher группа.
Понравилась статья? Подпишитесь на канал, чтобы быть в курсе самых интересных материалов
Подписаться