powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Регулярные выражения и формат строки
7 сообщений из 7, страница 1 из 1
Регулярные выражения и формат строки
    #38654712
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день ! есть такая задачка :

есть набор готовых паттернов в виде мапы для форматирования строк :

паттерн[%s] = значение[%s][%s]

есть входная мапа - ключ=значение

нужно понять если ли в мапе паттернов ключ который будет шаблоном для ключа из мапы входных значений и если это так то применить этот паттерн к ключу и значению из второй мапы.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
 String pattern1 = "BAR[%s]";

 String res =  String.format(pattern1, value);



 String pattern2 = "FOO[%s]=\"%s\"";

 String res =  String.format(pattern2, value1,value2);



на входе мне приходят значения вида -
Код: java
1.
2.
3.
4.
5.
6.
 String s1 = "BAR[0vb]";
 String s2 = "BAR[0v1]";

 String s3 = "FOO[0v3]"; 

// это значения ключей мапы 



что хочу :

1) понять что входная строка подпадает под строку нужного формата
2) если это так то получить параметры и заполнить формат (фактически получить s2 или s1)
3) сложность в том что по второму шаблону приходит значение до знака = , и если "FOO[0v3]" - соответствует шаблону FOO[%s]
создать результирующую строку вида :
...
Рейтинг: 0 / 0
Регулярные выражения и формат строки
    #38654736
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Регулярные выражения и формат строки
    #38654774
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,

String.format(pattern1, value);

как сформировать строку - по паттерну и значению я знаю .

вопрос был про то как проверить ключ в мапе входящих значений на соответствие паттерну !

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
        // мапа   паттернов
        Map<String,String> patterns = new HashMap<String, String>();
        patterns.put("BAR[%s]","\"%s\"");
        System.out.println(patterns);

        //  мапа входных данных
        Map<String,String> values = new HashMap<String, String>();
        values.put("BAR[011ccs]", "sdsds23");
        System.out.println(values);
        
        //1. проверить что ключ соответствует значению  "BAR[011ccs]" ключа в мапе patterns  вида "BAR[%s]"
        //2.  для данного ключа "BAR[%s]" - сгенерировать значение по шаблону BAR[011ccs]="sdsds23"

        //сформированный верный ответ
        System.out.println("BAR[011ccs]=\"sdsds23\"");
...
Рейтинг: 0 / 0
Регулярные выражения и формат строки
    #38654779
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно проверить что строка "BAR[0vb]" подходит под регулярное выражение "BAR[%s]"
...
Рейтинг: 0 / 0
Регулярные выражения и формат строки
    #38654789
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1нужно проверить что строка "BAR[0vb]" подходит под регулярное выражение "BAR[%s]"

в общем случае по строке BAR[%s] нужно построить паттерн регулярку -и через нее проверить значение BAR[0vb] - если оно соответствует взять из него значение 0vb

как то так .
...
Рейтинг: 0 / 0
Регулярные выражения и формат строки
    #38654899
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,

Есть два решения:
- написать свой парсер формат-паттерна
- либо преобразовывать формат-паттерн в регекс-патерн, а дальше - парсить регуляркой при помощи Scanner'а:
Код: java
1.
2.
3.
4.
5.
6.
Scanner scan = new Scanner(new ByteArrayInputStream("BAR[011ccs]".getBytes()));
String pattern = "BAR\\[\\w+\\]"; // напр., можно заменить %s на \w+
if (scan.hasNext(pattern)) {
    System.out.println(scan.next(pattern));
}
scan.close();
...
Рейтинг: 0 / 0
Регулярные выражения и формат строки
    #38655055
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,

Спасибо. Как раз после того как понял что нужно менять все значения %s на \\[\\w+\\]

Чтобы составить корректный паттерн.

Понял что надкжнее будет написать свой парсер а не пользоваться ругулярками. Ибо могут быть разные варианты типа foo[%s][%s]=[%s][%s] итд
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Регулярные выражения и формат строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]