Вход | Регистрация
 

Нужна помощь в использовании регулярных выражений

Нужна помощь в использовании регулярных выражений
Я
   Андроны едут
 
17.05.21 - 13:59
Как помощью регулярных выражений преобразовать строку вида "ТабНомер = 123, Фио = Иванов Иван Иванович, Оклад = 100000" в тело post-запроса.
    
    То есть получить:
    
    Данные = "{
    |  ""ТабНомер"": 123,
    |  ""Фио"": ""Иванов Иван Иванович"",
    |  ""Оклад"": 100000
    |  }";
   pechkin
 
1 - 17.05.21 - 14:02
но зачем рег выражения?
   Андроны едут
 
2 - 17.05.21 - 14:08
Понятно, что можно кодом. Но хочется. Сам к сожалению своего преклонного возраста осваиваю новое для себя с трудом.
   brainguard
 
3 - 17.05.21 - 14:11
(0) СтрЗаменить плюс фигурные скобки в начало и конец
   brainguard
 
4 - 17.05.21 - 14:13
(3) А, нет. Еще кавычки в Фио
   Андроны едут
 
5 - 17.05.21 - 14:14
(3) одна из проблем - числовые поля нужно показать как есть,  а строковые заключить в двойные кавычки
   brainguard
 
6 - 17.05.21 - 14:16
(5) Все равно стрзаменть, но несколько извращено
Фио= заменить на "Фио":"
,Оклад= заменить на ","Оклад":
   Андроны едут
 
7 - 17.05.21 - 14:18
нет заранее неизвестны имена реквизитов
   acht
 
8 - 17.05.21 - 14:18
(6) Да чо уж там
СтрЗаменить(Строка, "ТабНомер = 123, Фио = Иванов Иван Иванович, Оклад = 100000", "{
    |  ""ТабНомер"": 123,
    |  ""Фио"": ""Иванов Иван Иванович"",
    |  ""Оклад"": 100000
    |  }");
   brainguard
 
9 - 17.05.21 - 14:18
(6) Ну и ТабНомер= заменить на "ТабНомер":
   Kondarat
 
10 - 17.05.21 - 14:19
(0) Что-то смахивает на json. Не?
   brainguard
 
11 - 17.05.21 - 14:19
(8) Вот. Сразу видно умного человека
   Андроны едут
 
12 - 17.05.21 - 14:20
(10) смахивает
   acces969
 
13 - 17.05.21 - 14:21
Хочу посмотреть реализацию регулярных выражений в 1с, чтобы это было лаконично и удобно. Надеюсь здесь увижу пример.
Давно эти регулярки меня мучают)
   Kondarat
 
14 - 17.05.21 - 14:21
(12) Тогда все в структуру и ЗаписатьJSON()
   brainguard
 
15 - 17.05.21 - 14:21
(7) Тогда вам парсер JSON нужен.
   brainguard
 
16 - 17.05.21 - 14:22
(14) +++
   ptiz
 
17 - 17.05.21 - 14:25
(0) Как регулярка поймёт, что "Иванов Иван Иванович" - должен быть в кавычках, а 10000 - нет?
Обычный JSON. На входе должно быть типизировано.
   Андроны едут
 
18 - 17.05.21 - 14:25
(13) вот предыдущая тема Разложить строку в массив подстрок с помощью регулярных выражений в частном случае.
В ней TormozIT красиво решил мою хотелку. Жду когда он появится))
   Андроны едут
 
19 - 17.05.21 - 14:26
(17) легко - там только цифры
   Почему 1С
 
20 - 17.05.21 - 14:59
(18) Так он тебе не через регулярные выражения решил
   Кирпич
 
21 - 17.05.21 - 14:59
Не нужны тут регулярки. СтрРазделить и собрать чо надо
   pechkin
 
22 - 17.05.21 - 15:00
(18) там разложить, а тут заменить
   Андроны едут
 
23 - 17.05.21 - 15:07
(20) я функцию себе сделал исходя из его решения:

Функция РазложитьВерблюжьюНотацию(Вход)
    RegExp = Новый COMОбъект("VBScript.RegExp");
    RegExp.IgnoreCase = Ложь;//Игнорировать регистр
    RegExp.Global = Истина;//Поиск всех вхождений шаблона
    RegExp.MultiLine = Ложь;//Многострочный режим
    RegExp.Pattern = "([^^])([А-ЯЁ]+)";
    Выход = Нрег(RegExp.Replace(Вход,"$1 $2"));
    Возврат Врег(Лев(Выход,1))+Сред(Выход,2);
КонецФункции
   Почему 1С
 
24 - 17.05.21 - 15:24
Функция РазложитьВерблюжьюНотацию(Вход)
    RegExp = Новый COMОбъект("VBScript.RegExp");
    RegExp.IgnoreCase = Ложь;//Игнорировать регистр
    RegExp.Global = Истина;//Поиск всех вхождений шаблона
    RegExp.MultiLine = Ложь;//Многострочный режим
    RegExp.Pattern = "ТабНомер = (\d+), Фио = ([^,]+), Оклад = (\d+)";
    Выход = Нрег(RegExp.Replace(Вход,"Данные = "{
    |  ""ТабНомер"": $1,
    |  ""Фио"": ""$2"",
    |  ""Оклад"": $3
    |  }";"));
    Возврат Выход;
КонецФункции
   Гений 1С
 
25 - 17.05.21 - 17:13
(0) может мой опыт поможет? https://geniy1s.ru/najti-v-naimenovanii-czvet-i-razmer/
   polosov
 
26 - 17.05.21 - 17:52
(24)Я бы чуть апгрейднул до: "ТабНомер = (\d+),\s+Фио = ([^,]+),\s+Оклад = (\d+)"
   mistеr
 
27 - 17.05.21 - 18:33
(5) Лол, а где числовые, где строковые, известно?
   mistеr
 
28 - 17.05.21 - 18:34
(27) -> (7)
   ДедМорроз
 
29 - 17.05.21 - 21:14
Регулярка может в данной задаче только помочь отделить строку от числа,т.к.в исходнике кавычек не поставили.остальное,лучше кодом,т.к.все зависит от положения кавычек и скобок.


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.