Нужно определить по строке, что это счет первого сета теннисного матча. Вот паттерн:
private static final String FIRST_SET_PATTERN = "^0:0\\((6:6|[0-5]:[0-5])\\)\\(((@0|@15|@30|@40:0|15|30|40)|(0|15|30|40:0@|15@|30@|40@))";
А вот строки, которые должны подходить под этот паттерн:
String[]
{
"0:0(1:1)(@0:0)",
"0:0(0:0)(15:15@)",
"0:0(1:0)(@40:0)",
"0:0(0:5)(30:15@)",
"0:0(5:5)(0:30@)",
"0:0(3:5)(@30:15)",
"0:0(6:6)(0:0@)",
"0:0(6:6)(40:40@)"
};
На этом этапе все работает, но в паттерне нет проверки закрывающей скобки, которой должна заканчиваться строка. Если в конце паттерна добавляю \\)$ то это не работает. В регулярках плаваю, поэтому прошу подсказки.
Предлагаю
String pat = "^0:0\\((6:6|[0-5]:[0-5])\\)\\(@?([43]?0|15):([43]?0|15)@?\\)$";
См. демо
При использовании метода Matcher#matches() "якоря" ^ и $ можно опустить.
Подробности
^ - начало строки0:0 - подстрока 0:0\( - символ ((6:6|[0-5]:[0-5]) - 6:6 или цифры от 0 до 5, двоеточие и цифры от 0 до 5\)\( - подстрока )(@? - 1 или 0 знаков @([43]?0|15) - 4, 3 (опционально), а потом 0 -ИЛИ- 15: - двоеточие([43]?0|15) - 4, 3 (опционально), а потом 0 -ИЛИ- 15@? - 1 или 0 знаков @ \\) - знак )$ - конец текста.Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости