0. starik-2005 1430 03.03.16 23:36 Сейчас в теме

Регулярные выражения без внешних компонент? Легко!

Сложный способ организовать проверку строки с помощью регулярного выражения в 1С. При этом ни одна внешняя компонента не пострадала. Ну и от платформы (Linux, MustDie) - не зависит.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. neuromancer_aza 46 05.03.16 05:54 Сейчас в теме
Здравствуйте. Замеряли скорость работы? Как оно в скорости, например, с тем же VBScript.RegExp?
2. starik-2005 1430 05.03.16 11:20 Сейчас в теме
(1) neuromancer_aza, у меня Linux, поэтому мне непросто ответить на Ваш вопрос, но Вы всегда можете померять это самостоятельно и рассказать нам. Предположу, что медленнее, если не кешировать объект XDTO, но если кешировать, то может быть и быстрее (если надо один шаблон тестить с многими исходными данными)
63. andrey314 10 20.04.18 09:51 Сейчас в теме
(2)

При использовании данным способом шаблона:
ШаблонПоиска = "^\!{0,1}([0-9A-Za-z\*]{9,})&([0-9|\.]{1,})\$";

такая ошибка:


{ОбщийМодуль.ДополнительныеПроцедурыКлиент.Модуль(42)}: Ошибка при вызове метода контекста (ПрочитатьXML)
Модель = ФабрикаXDTO.ПрочитатьXML(Чтение);
по причине:
Ошибка разбора XML: - [4,38]
Фатальная ошибка:
xmlParseEntityRef: no name

Не подскажете как быть в данной ситуации? Подозреваю что причина может быть в символе "&"
64. starik-2005 1430 20.04.18 11:01 Сейчас в теме
(63) 1C, на сколько я помню, не умеет "$" и "^", т.к. для проверки шаблона эти символы не нужны. Попробуйте убрать их из строки.

По поводу "&" - то это символ? На сколько я знаю (и вики - тоже) - амперсанд - это обычный символ, на него ничто ругаться не должно...

ЗЫ: также, возможно Вы зря заэкранировали "!". Т.е. не нужно писать "\!" - нужно просто "!".

ШаблонПоиска = "!{0,1}([0-9A-Za-z\*]{9,})&([0-9|\.]{1,})";
🅵🅾️🆇; andrey314; +2 Ответить
65. andrey314 10 20.04.18 12:59 Сейчас в теме
(64)

Да спасибо.
Действительно, убрал "$" и "^" а вместо "&" использовал '& amp;' и теперь работает.
68. gansik 29.05.18 14:02 Сейчас в теме
(2) Sergey Andreev, а что Вы понимаете под "кэшированием объекта"? Как это правильно реализовать, можно примерчик? Мне как раз нужно проверять много строк на соответствие одному шаблону.
Заранее спасибо!
70. starik-2005 1430 29.05.18 14:51 Сейчас в теме
(68) просто добавьте в функцию параметр "test", а в коде функции строки с созданием объекта оберните в блок Если-Тогда-КонецЕсли, в котором проверяйте условие "test = неопределено". Перед первым вызовом напишите "test = Неопределено" (перед циклом проверки). В итоге у Вас функция будет вызываться только первый раз с пустым объектом XDTO, а в следующий раз уже с заполненным, что приведет к использованию уже созданного объекта, а не созданию нового.
71. gansik 29.05.18 15:32 Сейчас в теме
(70)Спасибо, всё получилось!
69. gansik 29.05.18 14:09 Сейчас в теме
3. pfihr 208 05.03.16 14:17 Сейчас в теме
Прекрасно!
От себя могу только добавить, что есть еще объекты для работы с XPath, это тоже регулярные выражения, но для уже языков разметки, типа html и xml.
Если добавите и их, будет совсем хорошо!
Роман Цованян.
4. Поручик 4159 05.03.16 14:22 Сейчас в теме
Оригинально. Интересно, как оно будет работать в цикле.
5. starik-2005 1430 05.03.16 16:42 Сейчас в теме
(4) Поручик, предположу, что если сохранять объект XDTO, то и в цикле будет быстро. Если же каждый раз фабрикой создавать пакет, то. полагаю, при множественном использовании производительность будет не очень.

(3) pfihr, здесь используется встроенная в 1С проверка типа по фасету для значения поля XDTO-объекта, так что, полагаю, добавить сюда ХPath совсем не получится )))
🅵🅾️🆇; Jogeedae; 1prog@bk.ru; Brawler; +4 Ответить
6. AlX0id 06.03.16 10:34 Сейчас в теме
Круто %)
А какой язык регулярок используется в фасетах?
8. starik-2005 1430 06.03.16 11:01 Сейчас в теме
(6) AlX0id, ИМХО тот же, что и в RegExp от M$.

(7) Xershi, ниже я привел часть синтаксиса с примерами. В коде есть пример для проверки даты: ПроверитьСтроку("01.01.2012","\d{2}\.\d{2}\.\d{4}") - сравните с описанием регулярных выражений ниже по тексту и попробуйте разобрать данный пример. Я сам с регулярками раза с третьего только разобрался, а первые два подхода вызвали лишь мысли о том, что пока мне это не сильно надо, но выглядит как-то сложно и времени потратить надо будет немало, а его, типа, у меня нет. Но когда действительно появилась необходимость в их освоении, то оказалось, что достаточно дня, чтобы разобраться.
9. Xershi 402 06.03.16 11:23 Сейчас в теме
(8) поэтому и говорю. Было бы не плохо чтобы эту тему разжевали более подробно. Так было бы быстрее освоить материал!
10. starik-2005 1430 06.03.16 11:36 Сейчас в теме
(9) Xershi, быстрее освоить материал - это взять и написать регулярки для тестирования каких-то реальных вещей. Например, даты, e-mail, адреса сайта, имени переменной, числа, почтового адреса с индексом, ... - вот реализуйте каждый из них - и Вы сразу же станете специалистом. Описанной в статье информации для этого уже должно хватить. А если что-то непонятно - всегда есть гугл, он куда терпеливей иных учителей и никогда не отказывает пытливому уму в предоставлении ссылок на искомое.
7. Xershi 402 06.03.16 10:43 Сейчас в теме
Было бы не плохо добавить блок, который бы описывал как на практике это использовать.
А то после прочтения не стало понятнее как это употреблять.
12. webester 28 06.03.16 16:12 Сейчас в теме
(7)Пробегите хотя бы бегло Дж.Фридл - Регулярные выражения. Уйдут все вопросы.
14. Xershi 402 06.03.16 16:29 Сейчас в теме
(12) webester, если будет задача, я просто погуглю, а пока просто хотел, чтобы улучшили статью, чтобы начинающим не пришлось гуглить)
11. retif 06.03.16 15:20 Сейчас в теме
интересно,надо будет проверить скорость работы
13. starik-2005 1430 06.03.16 16:19 Сейчас в теме
Кстати, господа, в notepad++ есть поиск и замена на основе регулярных выражений. Я так иногда на работе что-то искал и менял, чтобы потом в консоль запросов вставить, как список. Вот там как раз непочатый край для экспериментов с регулярными выражениями. Например, попробуйте все даты в тексте заменить на какую-то конкретную дату - уже расширите горизонты своего познания и огребете достаточно экспы для очередного левелапа )))
LordKim; viking(j); CHSN8; SiAl; +4 Ответить
15. AlX0id 09.03.16 09:16 Сейчас в теме
(13)
Ну уж тогда Regex Buddy можно поставить, для полноты ощущений :)
34. orefkov 1957 05.08.16 15:55 Сейчас в теме
(15) AlX0id, (15) AlX0id, зачем Regex Buddy, когда есть это:
artbear; vikad; +2 Ответить
39. alexkon 89 17.01.17 17:03 Сейчас в теме
(34), а где такой редактор взять?
16. maxx 655 09.03.16 12:14 Сейчас в теме
Здорово.
А не подскажете почему в конфигураторе при определении XTDO пакета визуально свойства pattern не видно?
17. starik-2005 1430 09.03.16 12:44 Сейчас в теме
(16) maxx, это свойство есть только у типа данных.
21. maxx 655 09.03.16 16:27 Сейчас в теме
(17) в определении типа тоже не увидел свойства pattern, хотя есть другие свойства фасета (максим. , миним. длины)
22. starik-2005 1430 09.03.16 16:34 Сейчас в теме
(21) maxx, ну, это, ...
Прикрепленные файлы:
18. karapuzzzz 61 09.03.16 14:38 Сейчас в теме
Регулярки это найс. Спасибо огромное автору за хорошую альтернативу внешним компонентам.

А теперь тестирование. За основу взял проверку адреса электронной почты:
Регулярка: "\w+@\w+\.\w+"
Текст проверки 1С:
ПозицияСобаки = Найти(СтрокаАнализа, "@");
		СтрокаПослеСобаки = Сред(СтрокаАнализа, ПозицияСобаки);
		ПозицияТочки =  Найти(СтрокаПослеСобаки, ".");
		
		Если ПозицияСобаки > 1 
			И ПозицияТочки > 1 Тогда
		
			//
		
		КонецЕсли;
Показать


На 100000 итераций код 1С отработал за 2сек, а регулярные выражения 63с
19. starik-2005 1430 09.03.16 15:04 Сейчас в теме
(18) karapuzzzz, а Вы кешировали объект XDTO или выполняли процедуру целиком? У Вас в коде правильным адресом будет и "%;№!@:?*!.", ибо вы не проверяете на "букву, цифру и подчеркивание" - реальный адрес куда сложнее. при том валидный "iem.mycompany@holding.com" не пройдет проверку по регулярке, ибо валидная "." приведет к ошибке. Т.е. не все так просто в действительности )))
20. starik-2005 1430 09.03.16 15:31 Сейчас в теме
(18) karapuzzzz, попробовал с кешем объекта XDTO и паттерном "[0-z]+@[0-z]+\.[0-z]+":

Время начала: 63 593 123 364 131
Длительность: 999 мс
Истинных: 100 000
Время начала: 63 593 123 365 130
Длительность: 280 мс

Код какой-то такой получился:
	ВремяНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
	Сообщить("Время начала: " + ВремяНачала);
	Для А = 1 ПО 100000 Цикл 
		Результат = ПроверитьСтроку(ОбъектХ, СтрокаАнализа, "[0-z]+@[0-z]+\.[0-z]+");
		Если Результат Тогда Сч = Сч + 1;
		КонецЕсли;
	КонецЦикла;
	Сообщить("Длительность: " + (ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала));
	Сообщить("Истинных: " + Сч);


	ВремяНачала = ТекущаяУниверсальнаяДатаВМиллисекундах();
	Сообщить("Время начала: " + ВремяНачала);
	Для А = 1 ПО 100000 Цикл 
	
		Результат = Ложь;
		ПозицияСобаки = Найти(СтрокаАнализа, "@");
        СтрокаПослеСобаки = Сред(СтрокаАнализа, ПозицияСобаки);
        ПозицияТочки =  Найти(СтрокаПослеСобаки, ".");
        
        Если ПозицияСобаки > 1 
            И ПозицияТочки > 1 Тогда
        
            Результат = Истина;
        
		КонецЕсли;
		
	КонецЦикла;
	Сообщить("Длительность: " + (ТекущаяУниверсальнаяДатаВМиллисекундах() - ВремяНачала));

Показать
VladimirL; +1 Ответить
23. Yashazz 2301 09.03.16 20:26 Сейчас в теме
Класс! Просто фантастика. Круть неимоверная, зачёт однозначный.
Совершенно шикарная идея, и ведь правда работает. Неистово плюсую.

Если не секрет, как до такого додумались? Что натолкнуло?
frkbvfnjh; Student1C; +2 Ответить
24. starik-2005 1430 09.03.16 21:52 Сейчас в теме
(23) Yashazz, ну как бы тут было два момента: выгрузка отчета по схеме XSD, любезно предосиавленная ПФР, которая отказалась грузиться в пакет и вынудила исследовать механизм XDTO. Потом была статья на ИС, в которой кто-то реализовал алгоритм регулярок. Я было подумал, а не выгрузить ли мне пакет в модель с прикрученным типом и менять паттерн проверки у этого типа... И, в итоге, сработало как видите...

ЗЫ: про XDTO еще месяц назад ничего толком не знал, а теперь знаю о нем весьма много.
DarkUser; anchovy; Дмитрий74Чел; +3 Ответить
49. frkbvfnjh 385 05.09.17 08:38 Сейчас в теме
(24)
ЗЫ: про XDTO еще месяц назад ничего толком не знал, а теперь знаю о нем весьма много.

Если не секрет, что изучали для познания дзен XDTO? Сам толком не вкурил эту тему, но очень хочется досконально в этом разбираться...
50. starik-2005 1430 05.09.17 08:52 Сейчас в теме
(49)
Если не секрет, что изучали для познания дзен XDTO?
"Чтобы в чем-то разобраться нужна задача и сержант с сапогом, периодически пинающим под зад" (Я)

Исходя из вышесказанного могу порекомендовать статьи "ХДТО - это просто" на Инфостарте (серия из трех статей, если не ошибаюсь - оттуда, в частности, почерпнута идея о сериализации модели). Ну и сержанта Вам с сапогом ))))

Кстати, у меня друг один все заставлял меня с регулярками разобраться - я болт забивал после прочтения пары строк из Вики. Но когда внезапно появилась задача, то я не только за день с ними вполне себе разобрался, но и написал механизм преобразования 1С-ной маски поля в регулярное выражение. правда тогда проверка была реализована на мелкософтовское регэкспе, но бывали случаи, когда СОМ тупо отваливался (баги нескольких платформ) и при инициализации любого СОМ-объекта система валилась с ошибкой. Исходя из этого мысль о реализации теста регулярок средствами платформы постоянно висела в голове. И как только я узнал, что в типах ХДТО есть возможность использовать паттерны проверки, то это сразу же материализовалось в вышеприведенный код.
51. frkbvfnjh 385 05.09.17 08:58 Сейчас в теме
(50)
при инициализации любого СОМ-объекта система валилась с ошибкой.

У меня та же фигня... Спасибо за наводку!
52. starik-2005 1430 05.09.17 08:58 Сейчас в теме
(51)
У меня та же фигня... Спасибо за наводку!
Решалось рестартом сервера приложений. Также проблема появляется при одновременной инициализации на сервере СОМ-объекта несколькими сеансами/потоками. Решение описал тут.
54. PavleG29 05.09.17 09:31 Сейчас в теме
(50)
Но когда внезапно появилась задача, то я не только за день с ними вполне себе разобрался, но и написал механизм преобразования 1С-ной маски поля в регулярное выражение.

Я даже помню, в какой организации это было :-)

Тоже потребовалось добавить проверку с помощью регулярок, но на Linyx регэксп уже не помог. Спасибо за рабочий пример и большой привет со старой работы!
55. starik-2005 1430 05.09.17 09:35 Сейчас в теме
(54)
Я даже помню, в какой организации это было :-)
Ну тогда ты должен знать, почему я тогда в ХДТО ничего не понимал! ))) (потому что сержант пинал Диму, а не меня)

ЗЫ: Тоже всем привет!
25. fvadim 6 10.03.16 11:03 Сейчас в теме
я правильно понимаю, что этот метод годится только для проверки на соответствие шаблону и получение сабматчей реализовать не получится?
26. tormozit 4910 10.03.16 11:06 Сейчас в теме
Проверка паттерна конечно полезна. Но например в ИР соотношение проверки паттерна и поиска по паттерну составляет 1:100. Поэтому название публикации не совсем корректное. Корректнее было бы "Проверка регулярного выражения без внешних компонент? Легко!"
Smallrat; pm74; herfis; zqzq; myjob1c; _also; borrman; Fragster; +8 Ответить
27. Fragster 852 10.03.16 11:34 Сейчас в теме
Проверка - замечательно. Но часто нужна замена и/или данные по началу и длине найденных фрагментов (опять же, их может быть более одного)
28. starik-2005 1430 10.03.16 12:29 Сейчас в теме
(27) Fragster, 1с использует в своем коде библиотеку icu - в ней все это, на сколько я знаю, есть. Что мешает им реализовать все это в языке - для меня загадка. Поэтому без внешних компонент только проверка.
29. starik-2005 1430 10.03.16 12:42 Сейчас в теме
30. AndreykO 4 11.03.16 06:48 Сейчас в теме
Спасибо. Очень помогло. Всё работает.
31. starik-2005 1430 12.03.16 11:11 Сейчас в теме
(30) AndreykO, всегда пожалуйста.
32. AlX0id 26.06.16 14:35 Сейчас в теме
чота рано порадовался ) как только решил применить реально, получил:

{Форма.Форма.Форма(102)}: Ошибка при вызове конструктора (ФабрикаXDTO)
МояФабрикаXDTO = Новый ФабрикаXDTO(Модель);
по причине:
Ошибка проверки данных XDTO:
Значение: '\d*\.\d*\.\d*\.\d*\:\d*' не соответствует простому типу: {sample-my-package}testtypes
Несоответствие фасету Pattern = '\d*\.\d*\.\d*\.\d*\:\d*'
по причине:
failed to compile: xmlFAParseRegExp: extra characters


При вот такой проверке:
Сообщить(ПроверитьСтроку("1.233.54.55:80","\d*\.\d*\.\d*\.\d*\:\d*"));
33. starik-2005 1430 26.06.16 15:45 Сейчас в теме
(32) AlX0id, а перед ":" зачем слеш обратный? Уберите его - и все заработает. Обратный слеш только перед спецсимволами можно ставить. В иных случаях регулярное выражение не будет валидным и система будет падать уже на попытке преобразования модели в XDTO-пакет. Можете а этом месте в код добавить проверку на криворуких программистов, чтобы система возвращала им вместо истины или лжи строку "криворукий программер написал неверное регулярное выражение" )))
35. herfis 264 05.08.16 17:02 Сейчас в теме
Прикольно! Жалко, что только проверка...
Для теста регулярок я разное пробовал, но руки зацепились почему-то именно за regexr.com
36. b00t 61 10.09.16 22:47 Сейчас в теме
regex1c (github)

Доработал аналогичную идею, на днях выкачу поиск по шаблону.
Для улучшения производительности сделал предварительную компиляцию выражения (создание XDTO-объекта и сохранение в структуру)
Есть крайне простой тест производительности.
37. binex 246 08.01.17 12:07 Сейчас в теме
\s - пробельный символ - ТАБ, пробел, перенос строки, возврат каретки и т.п.


Это только пробельный символ.

Перевод строки, табуляция - \r и \t, соответственно.
38. starik-2005 1430 09.01.17 09:46 Сейчас в теме
(37)
Это только пробельный символ.

Идем учить мат.часть:
Прикрепленные файлы:
40. alexkon 89 17.01.17 17:08 Сейчас в теме
Коллеги, возник следующий вопрос: пишу в образце простое выражение "тест" и строку поиска "тестовый текст". Совпадений не находит. Если использовать то же самое, но при помощи VBScript.RegExp, то результат положительный. В XDTO какой-то "свой" синтаксис регулярных выражений?
41. starik-2005 1430 17.01.17 18:08 Сейчас в теме
(40) в данном случае отрабатывает именно паттерн, т.е. проверяется соответствие образцу, а не выполняется поиск подстроки в образце. Смысл данного механизма - ограничивать данные в поле. Если Вы в качестве паттерна пишите "тест", то "тестовый текст" у Вас не будет равен "тест", но если задача стоит проверить на наличие во входящем потоке слова "тест", то нужно использовать ".*тест.*" (т.е. указать в шаблоне, что до и после слова "тест" могут следовать (или не следовать) любые символы.
42. alexkon 89 17.01.17 21:46 Сейчас в теме
(41), да я именно так и хотел. Я тоже вписывал в паттерн ".*тест.*" и "тестовый текст" удовлетворял поиску по шаблону. Я думал, что 1С использует в качестве шаблона стандартный синтаксис регулярных выражений, поэтому писал шаблон как и в VBScript.RegExp. Получается, что синтаксис отличается? Если да, то где можно посмотреть синтаксис, который используется при проверке в платформе? К примеру: хочу проверить, что во входящем потоке есть слова, начинающиеся с "test". В VBScript.RegExp написал бы паттерн "\btest". 1С такой паттерн принимать отказывается.
P.S.: кстати, если в VBScript.RegExp попытаться вписать в паттерн "\bтест", то вхождения в потоке "тестовый текст" тоже не найдутся. В инете нашел, что это связано с локализацией. В PHP можно просто указать флаг /u, тогда начинает адекватно работать с кириллицей.
43. starik-2005 1430 18.01.17 11:03 Сейчас в теме
(42) синтаксис не отличается, но нужно иметь ввиду, что в данном случае 1С проверяет соответствие шаблону, а не осуществляет поиск подстроки. Тут необходимо уловить разницу между наличием в строке подстроки, соответствующей шаблону, и когда строка вся целиком соответствует шаблону. Т.е. при таком подходе нельзя делать так, как делали Вы - нужно добавлять ".*" с обоих сторон (как % при ПОДОБНО в запросе).
44. sergzhel 31.05.17 09:51 Сейчас в теме
Доступен ли многострочный режим и получение количество вхождений, игнорирование регистра?
45. starik-2005 1430 31.05.17 11:06 Сейчас в теме
46. clition 15.08.17 13:08 Сейчас в теме
Не помню чьё: "Если у вас есть проблема, и вы собираетесь её решать с помощью регулярных выражений, тогда у вас будет уже две проблемы."
47. starik-2005 1430 15.08.17 13:30 Сейчас в теме
(46)
Не помню чьё
"Ученье - свет, а неученье - чуть свет и на работу..." (с) Народ.
48. frkbvfnjh 385 05.09.17 08:32 Сейчас в теме
Самое нормальное решение данной проблемы встроенными средствами 1С которое я видел ! Вопрос о включении функционала регулярных выражений в язык 1С поднималось на форуме разработчиков не единожды, но разрабы считают, что всегда есть вопросы поважнее и все прекрасно работает без регулярок.
53. frkbvfnjh 385 05.09.17 09:05 Сейчас в теме
Афигеть, спасибо, узнаю сегодня много нового...
56. wbazil 122 20.11.17 18:34 Сейчас в теме
Тестирую, получаю "удивительный" результат, может кто сказать почему?

Сообщить(ПроверитьСтроку("778987", "^\d+$"));     //возвращает Ложь
	
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Pattern =  "^\d+$";
Сообщить(RegExp.Test("778987"));   //возвращает Истину

ПроверитьСтроку функция из (0)
57. starik-2005 1430 21.11.17 13:59 Сейчас в теме
(56) ответил в почте, повторюсь здесь: для 1С в паттерне проверяется шаблон, поэтому нужды в описателях начала и конца строки нет никаких, более того - 1С на них ругается. Поэтому можно смело грохать ^ и $, ибо ^\d+$ в случае XDTO-паттерна будет равнозначна просто \d+.
VladimirL; +1 Ответить
58. Diversus 1778 21.12.17 12:37 Сейчас в теме
Скажите, а предложенный вариант будет работать на серверной 1С, которая установлена на Linux?
59. starik-2005 1430 28.12.17 16:43 Сейчас в теме
60. FilatovRA 144 12.01.18 16:18 Сейчас в теме
ПроверитьСтроку(СокрЛП(НомерГТД), "\d{8}/\d{6}/\d{7}/\d+"); Соответственно для проверки номеров ГТД, наверняка пригодится.
61. starik-2005 1430 29.01.18 11:56 Сейчас в теме
Коллега интереса ради проверил работоспособность механизма проверки регулярок с помощью описанной в статье функции и пришел к следующим выводам:
1. regExp работает в три раза быстрее (COM-объект) при условии, что COM-объект регэкспа кешируется. В принципе я не удивлен - 1С скорее всего для icu сделала нехилый и тромозящий враппер, чтобы все это работало.
2. В XDTO не поддерживаются ссылки (типа \1 \2 ...). Т.е. проверить, что у вас первое слово не повторяется - нереально.

Печалька, конечно, но сам механизм рабочий и позволяет что-то такое провернуть не только под виндой. Думаю, что создам внешнюю нативную компоненту для Linux, чтобы работало не медленнее RegExp'а.
62. It-developer 20 26.02.18 16:28 Сейчас в теме
Блин, фигово, что нет в платформе. Одни велосипеды
66. 7OH 32 02.05.18 09:40 Сейчас в теме
Вопрос по существу.
В оригинале RegExp ещё умеет возвращать массив совпадений.
А тут только на итого проверка - иначе никак ?
67. starik-2005 1430 03.05.18 12:03 Сейчас в теме
(66)
А тут только на итого проверка - иначе никак ?
Смотря чего и где искать. Для "массива совпадений" в небольшом XML может подойти XPath, реализованный в 1С для объекта DOM. Если что-то более серьезное, то иногда проще захардкодить что-то типа "А = СтрРазделить(Строка, "|")". Но если очень охота все отдать на откуп настройщикам универсального механизма, то без RegExp никак (в Linux можно через "sed -e" или "grep" получить все, что душе угодно).
72. charivnick 34 11.10.18 11:25 Сейчас в теме
Не работают конструкции начало и конца строки: $,^
73. starik-2005 1430 11.10.18 12:36 Сейчас в теме
(72) Да, об этом написано выше.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы сервисов FRM на 1С
Москва
зарплата от 150 000 руб.
Полный день

Консультант-аналитик 1С (ЗУП)
Санкт-Петербург
Полный день