Не получается паттерн

305
25 мая 2017, 08:56

Нужно определить по строке, что это счет первого сета теннисного матча. Вот паттерн:

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@)"
};

На этом этапе все работает, но в паттерне нет проверки закрывающей скобки, которой должна заканчиваться строка. Если в конце паттерна добавляю \\)$ то это не работает. В регулярках плаваю, поэтому прошу подсказки.

Answer 1

Предлагаю

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 знаков @
  • \\) - знак )
  • $ - конец текста.
READ ALSO
Ошибки компиляции

Ошибки компиляции

Помогите пожалуйстаБез введения новых полей класса и изменения модификаторов доступа устранить все ошибки компиляции

441
Создание двигающихся объектов в Java

Создание двигающихся объектов в Java

Дали задание создать ( нарисовать ) двигающийся объект в JavaКонкретное задание нарисовать фигуру относительно базовой точки ( базовая точка...

321
Не переходит на другое activity

Не переходит на другое activity

Есть активити Activityq и приложение переходит в него из мэинаЯ создавал активити через file -> new -> activity

315
Закрытие jframe через некоторое время netbeans

Закрытие jframe через некоторое время netbeans

Здравствуйте, пожалуйста, подскажите как сделать закрытие формы через некое время (минуту)На одной (1)jframe есть кнопка перехода на следующую...

324