Тестирование Java регулярного выражения appendReplacement () - PullRequest
1 голос
/ 20 сентября 2010

Я разработал пользовательский интерфейс, который позволяет пользователям определять шаблон регулярных выражений, а затем строку замены, которая используется appendReplacement().

, например

  • Шаблон - 7 (. *)
  • Заменить шаблон - $ 1

Так что 71234 даст 1234.

Могу ли я в любом случае убедиться, что шаблон ввода и шаблон замены совместимы без необходимости ввода соответствующей строки пользователем? Например, если шаблон замены был $1$2, это вызвало бы исключение во время выполнения. Могу ли я проверить это заранее?

EDIT:

Окончательное решение состояло в том, чтобы сделать, как предложил aioobe, и получить количество групп, создав фиктивный Matcher (не уверен, почему этот метод не используется в Pattern TBH), а затем вручную проанализировал строку замены, чтобы определить, какие ссылки $ group присутствуют , Немного неудобно, но работает.

1 Ответ

2 голосов
/ 20 сентября 2010

Ну, вы могли бы сделать что-то вроде:

yourPattern.matcher("").groupCount();

groupCount () вернет количество групп захвата (которое, по крайней мере, можно рассматривать как верхний предел того, чтопользователь может ссылаться на).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...