Java - Как отформатировать регулярное выражение? - PullRequest
1 голос
/ 29 апреля 2011

Я хочу создать небольшое окно, в котором пользователь будет:

  1. Ввести некоторый текст в JTextField1.
  2. Затем он введет регулярное выражение в JTextField2, чтобы проверить, является ли текств JTextField1 есть некоторый текст, соответствующий этому регулярному выражению.
  3. и другое поле JTextField3, в которое он может ввести форматирование для соответствующего текста
  4. Затем пользователь получит окончательный текст, соответствующий этому, и отформатированный в JTextField4.

Это кажется сложным, но я надеюсь, что этот скриншот прояснит мои потребности: enter image description here

Реализация первых двух полей была легкой, но третье поле, вот чтоя хочу спросить оЯ читал о Обратных ссылках, которые могут помочь мне сделать это, но это не так ясно для меня.Что я понимаю, так это то, что если я написал \ 2, \ 1, как показано на скриншоте, то он захватит вторую скобку в регулярном выражении, затем добавит запятую + пробел, а затем захватит первую в скобках регулярное выражение, давая правильный финалрезультат.

1.Это правильно, или я что-то упустил?

2.Это лучшее решение для реализации того, что мне нужно сделать?

3.После получения совпадения в коде Java = возвращает «K1234 T1234567», какой код используется для форматирования с использованием указанного формата?

1 Ответ

1 голос
/ 29 апреля 2011

То, что у вас есть, выглядит правильно.Вам нужно что-то вроде этого, чтобы отформатировать результат:

// your inputs for the sake of a working example snippet
String text = "K1234 T1234567";
String query = "([A-Z]{1}[0-9]{4})((\\ ){1})([A-Z]{1}[0-9]{7})";
String format = "\\4, \\1";

// usual regex pattern matching
Pattern pattern = Pattern.compile(query);
Matcher matcher = pattern.matcher(text);
matcher.find();

// you need to tweak the format to use $ instead of \ for replacement
String replacement = format.replaceAll("\\\\", "\\$");
String result = matcher.replaceAll(replacement);

// this outputs "T1234567, K1234"
System.out.println(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...