Нужно определить по строке, что это счет первого сета теннисного матча.
Вот паттерн:
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 знаков @
\\) - знак )
$ - конец текста.
Комментариев нет:
Отправить комментарий