Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
19 Дек 2017, 01:09
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Регулярное выражение  (Прочитано 952 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 12040

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-12-11
  • Сайт: 
  • Профессия: Программист 1С
Здравствуйте. Подскажите, пожалуйста.
Есть следующий текст:
"Итого товаров на странице                                              1                      1 123,34          288,89        1 233,44               132,57     1 767,27           268,67           


Общая цена товаров: 7 227,5 Руб., в т.ч. НДС 18% 1 102,51 Руб. Скидка: 544,01 Руб."
Следующий паттерн:
"([ \dобэз\?]+[\.\,\-]{1,2}[ ]{0,2}[\dобэз\?]+\s*[^\dобэз\?]){2,30}([ \dобэз\?]+[\.\,\-]{1,2}[ ]{0,2}[\dобэз\?]+\s*[^\dобэз\?])\s*[\s\S]{0,18}"
Не находит, но и не зависает. Если после этого паттерна поставить букву "о", или "б", или "щ" и т.п.(буквы, идущие после сумм), то зависать также не будет. А если поставить, например "и"
"([ \dобэз\?]+[\.\,\-]{1,2}[ ]{0,2}[\dобэз\?]+\s*[^\dобэз\?]){2,30}([ \dобэз\?]+[\.\,\-]{1,2}[ ]{0,2}[\dобэз\?]+\s*[^\dобэз\?])\s*[\s\S]{0,18}и", то всё зависает. Объясните, пожалуйста, в чём дело.


Оффлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6558
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
а что вы с эти паттерном делаете?

Оффлайн 12040

  • *
  • Сообщений: 11
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-12-11
  • Сайт: 
  • Профессия: Программист 1С
а что вы с эти паттерном делаете?
Функция ПолучитьПолучитьМассивИзвлекаемыхЭлементовПоПаттерну(Текст, Паттерн, ЭтоЧисло=Ложь)	
RegExp = Новый COMОбъект("VBScript.RegExp");// создаем объект для работы с регулярными выражениями
RegExp.MultiLine = Истина;  // истина — текст многострочный, ложь — одна строка
RegExp.Global = Истина;     // истина — поиск по всей строке, ложь — до первого совпадения
RegExp.IgnoreCase = Истина; // истина — игнорировать регистр строки при поиске

RegExp.Pattern = Паттерн;

ЧислоВхождений = 0;
Попытка
Matches=RegExp.Execute(Текст);
ЧислоВхождений=Matches.Count();
Исключение
КонецПопытки;
Если ЧислоВхождений = 0 Тогда
Возврат Неопределено;
КонецЕсли;

Match = Matches.Item(0);
SubMatches = Match.SubMatches;
МассивИзвлекаемыхЭлементов = Новый Массив;
Для А=0 По SubMatches.Count()-1 Цикл
МассивИзвлекаемыхЭлементов.Добавить(?(ЭтоЧисло,ПреобразоватьВЧисло(SubMatches.Item(А)),SubMatches.Item(А)));
КонецЦикла;

Возврат МассивИзвлекаемыхЭлементов;
КонецФункции

ИзвлЭлементы = ПолучитьПолучитьМассивИзвлекаемыхЭлементовПоПаттерну(ТекстОбластьПоиска, ""([ \dобэз\?]+[\.\,\-]{1,2}[ ]{0,2}[\dобэз\?]+\s*[^\dобэз\?]){2,30}([ \dобэз\?]+[\.\,\-]{1,2}[ ]{0,2}[\dобэз\?]+\s*[^\dобэз\?])\s*[\s\S]{0,18}\s*Итого\s*ока");
Исправил выражение на следующее (не особо принципиально было {2,30}):
"[ \dобэз\?]+[\.\,]{1,2}[ ]{0,2}[\dобэз\?]{2}\s{0,5}([ \dобэз\?]+[\.\,]{1,2}[ ]{0,2}[\dобэз\?]{2})\s*Итого\s*ока"
Всё нормально работает.
Видимо, надо регулярные выражения попроще писать.

Последний раз редактировалось: MuI_I_Ika; 14 Дек 2014, 10:34


Теги:
 

Ошибка Ошибка при вызове метода контекста (Выполнить) Ожидается выражение "ВЫБРАТЬ"

Автор Maks54Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 1814
Последний ответ 07 Ноя 2015, 17:27
от pavl_vs
{(1, 1)}: Ожидается выражение "ВЫБРАТЬ"

Автор Sasha133Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1479
Последний ответ 21 Мар 2014, 23:53
от MuI_I_Ika
{(1, 1)}: Ожидается выражение "ВЫБРАТЬ"

Автор Sasha133Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 9677
Последний ответ 21 Мар 2014, 10:35
от Sasha133
Ожидается выражение "ВЫБРАТЬ"

Автор АбылайханРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 9
Просмотров: 3059
Последний ответ 30 Мар 2015, 10:04
от Абылайхан
Универсальный отчет. Пользовательское поле "Выражение"

Автор Svetlanka1388Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 1330
Последний ответ 22 Фев 2017, 14:32
от depb

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
133 Сообщений
AIFrame
73 Сообщений
alex0402
52 Сообщений
ilyay ilyay
51 Сообщений
andron81_81
44 Сообщений
oleg-x
35 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

  • Точка Гостей: 194
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal