Comments (11)
@LevkinSergey
Большое спасибо за предложения!
Мне ближе второй вариант, я бы сделал так:
- чтобы не ломать совместимость с сущетсвующим поведением, добавить признак ИерархическийОбходРезультатов, со значением по умолчанию Ложь.
Если ИерархическийОбходРезультатов = Истина, тогда метод Следующий() будет обходить только верхний уровень, то есть целиком найденную строку, без вложенных групп.
-
добавить метод КоличествоВложенныхГрупп(), который будет возвращать количество групп в результатах запроса (количество всегда фиксировано для заданного шаблона).
-
добавить метод ПолучитьПодгруппу(ИндексПодгруппы), который будет возвращать значение найденной группы по индексу.
from regex1caddin.
Но принимаются предложения по расширению функционала для решения проблемы обхода групп результатов поиска.
У меня две идеи. Вторая на мой взгляд проще в использовании.
Первый вариант. Реализовать метод Выбрать(), который будет производить выборку в текущей группе. И обходить группу уже существующим методов следующий(). На 1С код по обходу примерно следующий будет
Рег.НайтиСовпадения("Hello world", "([A-Za-z]+)\s+([a-z]+)");
//Обходим MatchCollection
Пока Рег.Следующий() Цикл
ТекстMatch=Рег.ТекущееЗначение;
//Обходим SubMatches
Рег.Выбрать();
Пока Рег.Следующий() Цикл
ТекстSubMatch=Рег.ТекущееЗначение;
КонецЦикла;
КонецЦикла;
Второй вариант. Реализуем еще один метод СледующийПодчиненный(), Который будет обходить коллекцию SubMatches. Код в 1С по обходу примерно следующий
Рег.НайтиСовпадения("Hello world", "([A-Za-z]+)\s+([a-z]+)");
//Обходим MatchCollection
Пока Рег.Следующий() Цикл
ТекстMatch=Рег.ТекущееЗначение;
//Обходим SubMatches
Пока Рег.СледующийПодчиненный() Цикл
ТекстSubMatch=Рег.ТекущееЗначение;
КонецЦикла;
КонецЦикла;
from regex1caddin.
Точно в таком виде не планируется, поскольку есть ограничение со стороны протокола NativeAPI на то, какие типы значений может возвращать внешняя компонента. Но принимаются предложения по расширению функционала для решения проблемы обхода групп результатов поиска.
Вот здесь уже поднимали вопрос по этой проблеме - http://forum.infostart.ru/forum28/topic203542/message2261568/#message2261568
from regex1caddin.
так даже лучше получается.
Только один вопрос.
После позиционирования на подгруппе методом ПолучитьПодгруппу(ИндексПодгруппы), можно ли будет обойти ее вхождения с помощью метода Следующий()?
from regex1caddin.
так даже лучше получается.
Только один вопрос.
После позиционирования на подгруппе методом ПолучитьПодгруппу(ИндексПодгруппы), можно ли будет обойти ее вхождения с помощью метода Следующий()?
Метод ПолучитьПодгруппу будет возвращать само строковое значение найденной подгруппы. То есть это не позиционирование, а именно получение значения.
Например:
Рег.ИерархическийОбходРезультатов = Истина;
Рег.НайтиСовпадения("Hello world", "([A-Za-z]+)\s+([a-z]+)");
Сообщить( Рег.Количество()); // 1 - всего один результат, а не 3
Сообщить( Рег.КоличествоВложенныхГрупп()); // 2 - две подгруппы (submatches)
//Обходим MatchCollection
Пока Рег.Следующий() Цикл
Сообщить(Рег.ТекущееЗначение); // Hello world
Сообщить(Рег.ПолучитьПодгруппу(0)); // Hello
Сообщить(Рег.ПолучитьПодгруппу(1)); // world
КонецЦикла;
from regex1caddin.
понял. То что нужно.
from regex1caddin.
@LevkinSergey
Выложил тестовую сборку, пока только для Windows и Linux.
Реализовал новый функционал по описанной ранее схеме, за исключением добавления параметра ИерархическийОбходРезультатов . Его добавлять не стал, вместо этого, добавил этот признак третьим параметром в методе НайтиСовпадения / Matches. По умолчанию равен Ложь, то есть сохраняется совместимость поведения с предыдущими версиями.
from regex1caddin.
будет ли сборка для браузеров 11-й версии в ближайшее время?
from regex1caddin.
будет ли сборка для браузеров 11-й версии в ближайшее время?
В ближайшее время собрать к сожалению нет времени.
from regex1caddin.
будет ли сборка для браузеров 11-й версии в ближайшее время?
Добавлена сборка для веб браузера Google Chrome под Windows - https://github.com/alexkmbk/RegEx1CAddin/releases/tag/11.6
from regex1caddin.
Вроде работает. Спасибо.
Добавил новые методы и описал наконец подсистему, основанную на вашей компоненте
https://github.com/cpr1c/RegEx1C_cfe
from regex1caddin.
Related Issues (19)
- Ошибка в методе НайтиСовпадения HOT 14
- [pcre2] Аварийное завершение программы при вызове MatchesJSON HOT 2
- Реализовать выброс исключения с указанием описания ошибки HOT 1
- Свойство ОписаниеОшибки заполняется в какой то странной кодировке HOT 1
- Не работают флаги поиска если их задавать после установки шаблона
- Аварийное завершение программы при попытке анализировать несовместимый тип HOT 3
- Как установить библиотеку/компонент и привязать к 1с? HOT 5
- Не метод а функция Совпадает \ IsMatch \ Test? HOT 1
- Сборка не пошла HOT 3
- Падение на Linux на 22 платформе (всех) HOT 23
- info.xml для БСП ВнешниеКомпаненты HOT 2
- При многократном поиске выражения "{1}" размножается описание ошибки HOT 3
- Запрос функции: Именованные группы HOT 4
- Не верно отрабатывает регулярка. HOT 3
- Доступность на ВебКлиенте HOT 3
- Сравнительный замер с VBScript HOT 15
- Совместимость с VBScript HOT 21
- [pcre2] Replace возвращает пустую строку HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from regex1caddin.