Имя: Пароль:
IT
Веб-мастеринг
Нужна помощь в использовании регулярных выражений
,
0 Андроны едут
 
17.05.21
13:59
Как помощью регулярных выражений преобразовать строку вида "ТабНомер = 123, Фио = Иванов Иван Иванович, Оклад = 100000" в тело post-запроса.
    
    То есть получить:
    
    Данные = "{
    |  ""ТабНомер"": 123,
    |  ""Фио"": ""Иванов Иван Иванович"",
    |  ""Оклад"": 100000
    |  }";
1 pechkin
 
17.05.21
14:02
но зачем рег выражения?
2 Андроны едут
 
17.05.21
14:08
Понятно, что можно кодом. Но хочется. Сам к сожалению своего преклонного возраста осваиваю новое для себя с трудом.
3 brainguard
 
17.05.21
14:11
(0) СтрЗаменить плюс фигурные скобки в начало и конец
4 brainguard
 
17.05.21
14:13
(3) А, нет. Еще кавычки в Фио
5 Андроны едут
 
17.05.21
14:14
(3) одна из проблем - числовые поля нужно показать как есть,  а строковые заключить в двойные кавычки
6 brainguard
 
17.05.21
14:16
(5) Все равно стрзаменть, но несколько извращено
Фио= заменить на "Фио":"
,Оклад= заменить на ","Оклад":
7 Андроны едут
 
17.05.21
14:18
нет заранее неизвестны имена реквизитов
8 acht
 
17.05.21
14:18
(6) Да чо уж там
СтрЗаменить(Строка, "ТабНомер = 123, Фио = Иванов Иван Иванович, Оклад = 100000", "{
    |  ""ТабНомер"": 123,
    |  ""Фио"": ""Иванов Иван Иванович"",
    |  ""Оклад"": 100000
    |  }");
9 brainguard
 
17.05.21
14:18
(6) Ну и ТабНомер= заменить на "ТабНомер":
10 Kondarat
 
17.05.21
14:19
(0) Что-то смахивает на json. Не?
11 brainguard
 
17.05.21
14:19
(8) Вот. Сразу видно умного человека
12 Андроны едут
 
17.05.21
14:20
(10) смахивает
13 acces969
 
17.05.21
14:21
Хочу посмотреть реализацию регулярных выражений в 1с, чтобы это было лаконично и удобно. Надеюсь здесь увижу пример.
Давно эти регулярки меня мучают)
14 Kondarat
 
17.05.21
14:21
(12) Тогда все в структуру и ЗаписатьJSON()
15 brainguard
 
17.05.21
14:21
(7) Тогда вам парсер JSON нужен.
16 brainguard
 
17.05.21
14:22
(14) +++
17 ptiz
 
17.05.21
14:25
(0) Как регулярка поймёт, что "Иванов Иван Иванович" - должен быть в кавычках, а 10000 - нет?
Обычный JSON. На входе должно быть типизировано.
18 Андроны едут
 
17.05.21
14:25
(13) вот предыдущая тема Разложить строку в массив подстрок с помощью регулярных выражений в частном случае.
В ней TormozIT красиво решил мою хотелку. Жду когда он появится))
19 Андроны едут
 
17.05.21
14:26
(17) легко - там только цифры
20 Почему 1С
 
17.05.21
14:59
(18) Так он тебе не через регулярные выражения решил
21 Кирпич
 
17.05.21
14:59
Не нужны тут регулярки. СтрРазделить и собрать чо надо
22 pechkin
 
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);
КонецФункции
24 Почему 1С
 
17.05.21
15:24
Функция РазложитьВерблюжьюНотацию(Вход)
    RegExp = Новый COMОбъект("VBScript.RegExp");
    RegExp.IgnoreCase = Ложь;//Игнорировать регистр
    RegExp.Global = Истина;//Поиск всех вхождений шаблона
    RegExp.MultiLine = Ложь;//Многострочный режим
    RegExp.Pattern = "ТабНомер = (\d+), Фио = ([^,]+), Оклад = (\d+)";
    Выход = Нрег(RegExp.Replace(Вход,"Данные = "{
    |  ""ТабНомер"": $1,
    |  ""Фио"": ""$2"",
    |  ""Оклад"": $3
    |  }";"));
    Возврат Выход;
КонецФункции
25 Гений 1С
 
гуру
17.05.21
17:13
(0) может мой опыт поможет? https://geniy1s.ru/najti-v-naimenovanii-czvet-i-razmer/
26 polosov
 
17.05.21
17:52
(24)Я бы чуть апгрейднул до: "ТабНомер = (\d+),\s+Фио = ([^,]+),\s+Оклад = (\d+)"
27 mistеr
 
17.05.21
18:33
(5) Лол, а где числовые, где строковые, известно?
28 mistеr
 
17.05.21
18:34
(27) -> (7)
29 ДедМорроз
 
17.05.21
21:14
Регулярка может в данной задаче только помочь отделить строку от числа,т.к.в исходнике кавычек не поставили.остальное,лучше кодом,т.к.все зависит от положения кавычек и скобок.