Имя: Пароль:
1C
1С v8
Регулярные выражения для 1С
0 Shikolosa
 
07.02.19
09:14
Добрый день! Требуется разложить наименование номенклатуры, например: Гильза ГЦР.103-М20х1,5-М20х1,5-10/8-120-6.3 на значения  (у каждого символа свое значение: диаметр, резьба, длина, вид стали). Пытаюсь сделать это с помощью регулярных выражений. Может есть еще какие способы.  Наименований тысяча, где-то могут стоять пробелы, где-то есть точки, где-то нет.  УПП 1С:Предприятие 8.2 (8.2.19.130)
1 ДенисЧ
 
07.02.19
09:20
А как разделены показатели? Их последовательность всегда одинакова?
2 cons24
 
07.02.19
09:22
Если без регулярных то
СтрНайти("-", Строка);
Лев()
Прав()
Сред()
и т.д.

Но лучше регулярные. Рекомендую infostart . ru/ public /464971/ и infostart . ru/ public /592108/
3 ДенисЧ
 
07.02.19
09:23
(2) Зачем найти? стрзаменить(строка, "-", Символы.ВК) и потом СтрПолучитьСтроку()
4 Shikolosa
 
07.02.19
09:24
(1) Последовательность всегда одинаковая,только могут отсутствовать необязательные показатели. Разделены пробелом или точкой, но это не всегда.(могут отсутствовать)
5 TormozIT
 
гуру
07.02.19
09:26
Для сложных разборов с регулярными выражениями рекомендую
http://devtool1c.ucoz.ru/index/konstruktor_reguljarnogo_vyrazhenija/0-60
6 TormozIT
 
гуру
07.02.19
09:27
(5) Там можно генерить готовый код на встроенном языке и загружать его обратно в конструктор.
7 etc
 
07.02.19
09:31
или СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>)
если состав строки простой
8 spiller26
 
07.02.19
09:35
вот статья хорошая
http://sayansoft.ru/public/592108/
9 Shikolosa
 
07.02.19
10:48
Спасибо, буду изучать)
10 Вася Теркин
 
07.02.19
11:21
(4) Смотри в сторону того, как адрес в 1С в Контактной информации сохранялся и разбирался автоматом...
11 Shikolosa
 
08.02.19
16:11
Подскажите пожалуйста, как можно с помощью регулярных выражений из строки: -103-5-10-8-120-6-3  вытащить первый ноль.
12 Garykom
 
гуру
08.02.19
16:15
(11) Покажите какой именно "первый ноль" вытащить и что должно получиться/вернуть на примере.
13 Shikolosa
 
08.02.19
16:21
-103-5-10-8-120-6-3   ноль между "1" и "3". В результате должен получиться "0"
14 Garykom
 
гуру
08.02.19
16:25
(13) Эээ тебе надо вернуть нечто между 1 и 3 или вернуть первый 0?

Вернуть первый 0 это сказать есть ли 0 или указать место первого 0 или что блин?

Пойми что "получиться 0" можно без регэкспов и даже без исходной строки ))
15 Shikolosa
 
08.02.19
16:29
Вернуть "нечто" между "1" и "3". "Нечто" это диапазон "1-5" Причем и "1" и "3" может быть диапазоном чисел "1-6"
16 Shikolosa
 
08.02.19
16:33
Извините, ошиблась: "Нечто" это диапазон "0-5"
17 Garykom
 
гуру
08.02.19
16:42
(16) да я догадался

Забейте на регэкспы и используйте
Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>)
https://helpme1c.ru/stroki-v-yazyke-1s-8-v-primerax

"[1-6][0-5][1-6]" - вернет три символа и возьми средний
18 Garykom
 
гуру
08.02.19
16:43
(17) регулярка "[1-6][0-5][1-6]" вернет 103
regexr.com/480om
19 Garykom
 
гуру
08.02.19
16:43
20 Shikolosa
 
08.02.19
17:02
(17) Спасибо большое, получилось)