Здравствуйте!

Имеется строка вида: "замена ламп Для решения инцидента заявитель должен предоставить: ФИО инициатора: Гришина Марина Валерьевна Контактный телефон: +7 (967) 776-00-17 Адрес офиса: Бугуруслан, ул.Революционная, 35 (6414) График работы: Пн-Вс: (08:00-20:00) ". Необходимо получить строку 6414. Подскажите как можно реализовать?

Заранее благодарен!
---
(\d{4})
Если не сложно можешь помочь с регулярным выражением для строки - "0451-НВС Новосибирск, ул Фрунзе 238, ТЦ Сибирский Молл 1 этаж", "0598-КРК, Красноярск, ул Д.Мартынова 12, ТЦ Покровский 1 этаж". Шаблон 4-цифры"-"3буквы?
---
Я думаю это уже слишком для такой простой задачи.))

```1c
    ИзначальнаяСтрока = "замена ламп Для решения инцидента заявитель должен предоставить: ФИО инициатора: Гришина Марина Валерьевна Контактный телефон: +7 (967) 776-00-17 Адрес офиса: Бугуруслан, ул.Революционная, 35 (6414) График работы: Пн-Вс: (08:00-20:00) ";
    НоваяСтрока = СтрЗаменить(ИзначальнаяСтрока, "График работы:", Символы.ПС);
    КодТочки = Лев(Прав(СокрЛП(СтрПолучитьСтроку(НоваяСтрока, 1)), 5), 4);
```
---
^\d{4}-\D{3}
---
^ЦМС \d+
Огромное спасибо! Всё ни как не могу с регулярными поладить!
---
сначала грубо обрезать строку, слева и справа до каких то постоянных символов.
Например Слово "График" - всегда присутствует ? Тогда справа все режем вместе со словом график.
Слева также, мне кажется слово "офиса:" должно системно присутствовать во всех строках. Обрезаем до него.

остается маленькая строка, во всего одними скобками.
Повторяем процедуру и режем все до этих скобок.
Содержимое оставляем.
---
либо просто, слева ищем слово Адрес офиса
если оно есть - значит строка под условия попадает.
Обрезаем слева весь шлак.
А по тому что осталось, слева же первый "(" - уже наш клиент.

В общем анализируя массив информации, ищи повторяющиеся закономерности, и по ним строй алгоритм.
---
вот через регулярки, при условии, что это число всегда в скобках и ровно 4 символа:

```1c
    СтрокаАдреса = "замена ламп Для решения инцидента заявитель должен предоставить: ФИО инициатора: Гришина Марина Валерьевна Контактный телефон: +7 (967) 776-00-17 Адрес офиса: Бугуруслан, ул.Революционная, 35 (6414) График работы: Пн-Вс: (08:00-20:00) ";

    RegExp = Новый COMОбъект("VBScript.RegExp");
    RegExp.Pattern = "(\d{4})";
    ЗначенияТочки = RegExp.Execute(СтрокаАдреса);
    Если ЗначенияТочки.Count > 0 Тогда
    Сообщить(ЗначенияТочки.Item(0).Value);
    КонецЕсли;
```
---
(\d{4})
Если не сложно можешь помочь с регулярным выражением для строки - "0451-НВС Новосибирск, ул Фрунзе 238, ТЦ Сибирский Молл 1 этаж", "0598-КРК, Красноярск, ул Д.Мартынова 12, ТЦ Покровский 1 этаж". Шаблон 4-цифры"-"3буквы?
---
\d{4}-\w{3}

Учитывая, что нужный фрагмент это начало строки, то можно так:
^\d{4}-\D{3}
---
\d{4}-\w{3}
В тестировании регулярных не отработало ни чего не вернул шаблон!
---
да, вместо \w нужно \D
---
Работает!

И последний вариант, который может быть: "ЦМС 43 Владивосток Эгершельд", "ЦМС 213 Владивосток ТЦ Дружба", "ЦМС 7 Владивосток Тихая", код клиента ЦМСпробелЦифры?
---
^ЦМС \d+
---
^ЦМС \d+
Огромное спасибо! Всё ни как не могу с регулярными поладить!
---
\d{4}-\w{3}
С Буквами что-то не то! "\d{4}-" - отрабатывает идеально!
---
^\d{4}-\D{3}
---
Тоже работает!
---
Это код точки находящейся после адреса!
---
В любом случае должна быть система. Этот код всегда 4 символа?
---
Для данных клиентов да, всегда 4 символа!
---
Есть вот такая штука, может кто поможет составить шаблон для моей задачи?
---
```1c
    Функция Извлечение(ИсходнаяСтрока)
    МассивСтрок = СтрРазделить(ИсходнаяСтрока," ");
    для Каждого Стр из МассивСтрок Цикл
    Стр = СтрЗаменить(Стр,"(",");
    Стр = СокрЛП(СтрЗаменить(Стр,(")","));
    Если СтрДлина(Стр)=4 тогда
    Возврат Стр;
    КонецЕсли;
    КонецЦикла;
    Возврат неопределено;
    КонецФункции;
```
---
VBScript.RegExp
---
Я думаю это уже слишком для такой простой задачи.))

```1c
    ИзначальнаяСтрока = "замена ламп Для решения инцидента заявитель должен предоставить: ФИО инициатора: Гришина Марина Валерьевна Контактный телефон: +7 (967) 776-00-17 Адрес офиса: Бугуруслан, ул.Революционная, 35 (6414) График работы: Пн-Вс: (08:00-20:00) ";
    НоваяСтрока = СтрЗаменить(ИзначальнаяСтрока, "График работы:", Символы.ПС);
    КодТочки = Лев(Прав(СокрЛП(СтрПолучитьСтроку(НоваяСтрока, 1)), 5), 4);
```
---
ИзначальнаяСтрока = "замена ламп Для решения инцидента заявитель должен предоставить: ФИО инициатора: Гришина Марина Валерьевна Контактный телефон: +7 (967) 776-00-17 Адрес офиса: Бугуруслан, ул.Революционная, 35 (6414) График работы: Пн-Вс: (08:00-20:00) ";
    НоваяСтрока = СтрЗаменить(ИзначальнаяСтрока, "График работы:", Символы.ПС);
    КодТочки = Лев(Прав(СокрЛП(СтрПолучитьСтроку(НоваяСтрока, 1)), 5), 4);

В данном варианте помогло, но у меня загрузка идёт из Excel и разных файлов, хотелось бы всё таки через регулярное выражение! Спасибо!
---
Что означает регулярное выражение?
---
```1c
    Попытка
    RegExp = Новый COMОбъект("VBScript.RegExp");
    Исключение
    Предупреждение("Не удалось создать объект для работы с регулярными выражениями!");
    Возврат ";
    КонецПопытки;

    // Получаем анализируемый текст и задаем регулярное выражение
    ТекстДляАнализа = Текст;
    РегулярноеВыражение = Шаблон;
    RegExp.Pattern = РегулярноеВыражение;

    Matches = RegExp.Execute(ТекстДляАнализа);

    Для Сч1 = 0 По Matches.Count() - 1 Цикл

    Совпадение = Matches.Item(Сч1);
    ЗначениеСовпадения = Совпадение.Value;
    Возврат ЗначениеСовпадения;
    КонецЦикла;
```

Давно известная вещь в php и других языках программирования! Обычный шаблон типа "^\d{4}-\D{3}" Парсит весь текст и отдаёт результат!
---
Это текст - "978-5-699-24486-7
Молодой испанец978-5-375-00003-9 Франсиско Мероньо Пельисер в самом начале Гражданской войны вступил добровольцем в ряды978-5-699-32293-0 республиканской армии. Успешно закончив курсы истребителей, как подающий большие надежды, он был направлен в Советский Союз, где весной 1937 года проходил обучение в летной школе.
Вернувшись в Испанию, молодой пилот три года провел 978-5-699-20986-6на фронте. За это время Франсиско Мероньо Пельисер, вскоре прозва5-699-13039-Xнный фашистами Красным Дьяволом, из новичка превратился в аса, в 100 воздушных боях сбив 20 самолетов противника. После падения Республики капитан Мероньо эмигрировал в Советский Союз, а с началом Великой Отечественной войны добровольно вступил в ряды Красной Армии, чтобы защищать свою вторую Родину. Летая на различных типах истребителей, испанский ас защищал небо Москвы, Тулы и Курска. В боях над Курской дугой он был тяжело ранен, но все же вернулся в строй. Всего в ходе Великой Отечественной войны Франсиско Мероньо Пельисер сбил 7 немецких самолетов, увеличив свой личный счет до 27 вражеских машин.
Эта книга — увлекательный рассказ о воздушных боях и боевых товарищах, о поражениях5-86866-282-2 и победах, о братстве советских и испанских летчиков, зародившемся во время Гражданской войны в Испании и навсегда соединившем их на полях сражений Великой Отечественной."
Есть номера isbn и при помощи регулярного выражения и кода мы их все получим! Шаблон регулярного: "(?=[-0-9X ]{17}|[-0-9X ]{13}|[0-9X]{10})(?:97[89][- ]?)?[0-9]{1,5}[- ]?(?:[0-9]+[- ]?){2}[0-9X]"
---
Нет не слишком, когда у меня в справочнике много настроек для загрузки из Excel и в зависимости от настроек будет получать код парсинг! Чем писать для каждого свой алгоритм!
---
Навскидку (не проверял):

```1c
    НачалоПодстроки = СтрНайти(ИсходнаяСтрока, "Адрес офиса");
    КонецПодстроки = СтрНайти(ИсходнаяСтрока, "График работы");
    ИскомыйКод = Неопределено;
    текСимвол = ";
    Для ОтрицательныйНомерСимвола = -КонецПодСтроки По -НачалоПодстроки Цикл
    текСимвол = Сред(ИсходнаяСтрока, -ОтрицательныйНомерСимвола, 1);
    Если текСимвол = ")" Тогда
    ИскомыйКод = ";
    ИначеЕсли текСимвол = "(" Тогда
    Прервать;
    ИначеЕсли ИскомыйКод <> Неопределено Тогда
    ИскомыйКод = текСимвол + ИскомыйКод;
    КонецЕсли;
    КонецЦикла;
    Если текСимвол <> "(" Тогда
    ИскомыйКод = Неопределено;
    КонецЕсли;
```
---
- либо регулярки
- либо разложить строку в массив по разделителю (пробел, скобки) массив запихнуть в запрос и ...

остальное схоластика без четких правил с результатом на авось
---
еще вариант

```1c
    Функция Извлечение(ИсходнаяСтрока)
    Стр = СтрЗаменить(ИсходнаяСтрока,")","(");
    МассивСтрок = СтрРазделить(Стр,"(");
    Для Каждого СтрокаРазд из МассивСтрок Цикл
    Если СтрДлина(СтрокаРазд)=4 тогда
    Возврат СтрокаРазд;
    КонецЕсли;
    КонецЦикла;
    Возврат неопределено;
    КонецФункции
```