Java соответствует регулярному выражению, а затем форматирует строку с использованием второго регулярного выражения - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь сначала сопоставить строку с шаблоном регулярного выражения, а затем использовать второй шаблон для форматирования этой строки.Из того, что я прочитал, одним из способов достижения этого является использование .replaceAll() ( edit : .replaceAll() не используется для этой цели, прочитайте комментарии к ответу для уточнения)

Я создал эту функцию, цель которой состоит в том, чтобы:

  1. Сопоставить заданную строку с match
  2. Форматировать заданную строку, используя formatрегулярное выражение

    String match = "(^[A-Z]{2}[0-9]{2}[A-Z]{3}$)";
    String format = "(^[A-Z]{2}[0-9]{2}[*\\s\\\\][A-Z]{3}$)";
    String input = "YO11YOL"
    
    if (input.matches(match)) {
        return input.replaceAll(input, "??");
    }
    

Выходные данные должны быть YO11 YOL с добавлением пробела после четвертого символа

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Вы можете использовать две группы захвата и ссылаться на них из шаблона замены строк с помощью заполнителей $1 и $2:

String result = input.replaceFirst("^([A-Z]{2}[0-9]{2})([A-Z]{3})$", "$1 $2");

См. Демонстрационную версию regex и диаграмму:

enter image description here

Обратите внимание, что .replaceFirst достаточно (хотя вы можете также использовать .replaceAll), поскольку ожидается только одна операция замены (регулярное выражение соответствует всей строке из-за якорей ^ и $ ).

0 голосов
/ 28 февраля 2019

Это то, что вы хотите: К сожалению, это не может быть сделано так, как вы хотите.Но это можно сделать, используя подстроку .

public static void main(String args[]){
    String match = "(^[A-Z]{2}[0-9]{2}[A-Z]{3}$)";
    String input = "YO11YOL";

    if (input.matches(match)) {
       String out = input.substring(0, 4) + " " + input.substring(4, 7);
       System.out.println(out);
    }

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