Как использовать регулярное выражение в Java для сопоставления нескольких или отдельных значений в одинарных или нескольких квадратных скобках? - PullRequest
0 голосов
/ 05 января 2020

Я пытаюсь завершить калькулятор строк Роя Ошерова как TDD упражнение, и поскольку у входов есть шаблон, я подумал, что буду использовать регулярное выражение, но это то, чего я не использовал в Java.

Два входных сигнала, которые я тестирую: String string = "//[***]\n1***2***3" и String string = "//[*][%]\\n1*2%3".

Допустимые значения:

  1. //[***]\n1***2***3
  2. //;\n1;2
  3. //[%%]\n1%%2%%3
  4. //[*][%]\\n1*2%3

Мне удалось создать выражение, соответствующее первому вводу: Boolean matches = Pattern.compile("//(\\[(\\D+)])+\n.*").matcher(string).matches();

проблема в том, что когда я пытаюсь сопоставить вторую строку, я использую следующее, но, кажется, не совпадает: Boolean matches = Pattern.compile("//(\\[(\\D+)]+)+\\n.*").matcher(string).matches();

Любая помощь очень ценится, чтобы лучше понять, где я иду не так, Объект это все между \\ и \n можно использовать в качестве разделителей для текста после '\ n'.

...