Пост

Регулярные выражения в платформе 8.3.23 📣


Вышла тестовая версия платформы 8.3.23. В полноценном релизе может всё измениться. Но пока, что на данный момент имеем:

Новые методы платформы:

📍СтрНайтиПоРегулярномуВыражению(<Строка>, <РегулярноеВыражение>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>, <ИгнорироватьРегистр>, <МногострочныйПоиск>)

📍СтрНайтиВсеПоРегулярномуВыражению(<Строка>, <РегулярноеВыражение>, <ИгнорироватьРегистр>, <МногострочныйПоиск>)

📍СтрПодобнаПоРегулярномуВыражению(<Строка>, <РегулярноеВыражение>, <ИгнорироватьРегистр>, <МногострочныйПоиск>)

📍СтрЗаменитьПоРегулярномуВыражению(<Строка>, <РегулярноеВыражение>, <ПодстрокаЗамены>, <ИгнорироватьРегистр>, <МногострочныйПоиск>)

👍 Понятное описание в документации и есть примеры

ℹ️ Используются регулярные выражения стандарта ICU

🤔 Метод СтрПодобнаПоРегулярномуВыражению() проверяет на соответствие шаблону ВСЮ строку. Как-то я больше привык, когда метод проверяет наличие в строке любого кусочка, соответствующего шаблону. Но, в принципе, для этого есть СтрНайтиПоРегулярномуВыражению()

👎 Зачем-то наделали в методах кучу параметров. В СтрНайтиПоРегулярномуВыражению() их аж семь. И из них 5 необязательных. А если понадобится что-то добавить? Параметры для регулярок бывают разные. Я понимаю, когда старый легаси не исправляют, но тут… хочется напомнить про [стандарты разработки 1С] (https://its.1c.ru/db/v8std/content/640/hdoc) =)

Лучше бы сразу сделали что-то типа

ПараметрыПоиска = Новый ПараметрыПоискаПоРегулярномуВыражению();

❌ Иногда при некорректном выражении падает сеанс. Пример видно на скрине. Надеюсь, что до релиза поправят)

🕑 Замеры скорости показывают, что 1С выполняет поиск быстрее классической VBScript.RegExp. Иногда значительно быстрее. Иногда в десятки раз! Ну и в ряде случаев может выполняться медленее. Например, если продублировать строку “Моя почта: sample@example.com” несколько тысяч раз и применить на ней шаблон “(\w+@\w+\.\w+)”, то чем длинее текст, тем 1С больше отстает от компоненты. В несколько раз.

🧑‍💻 Конечно, нужно больше тестов. И если вы хотите поучаствовать, то можете использовать разработанный мною инструмент для этих целей: ссылка на гитхаб.

👥 Если есть какие-то замечания по инструменту, то добавляйте ишуиз. Если же есть замечания по самим регулярным выражениям в 1С, то можете добавлять комментарий на этой страничке. Будет интересно увидеть результаты 🥳

😄 P.S.: Оптимистичное (и классическое) начало главы про регулярные выражения из документации на ИТС:

У вас есть проблема. Вы решили использовать регулярные Выражения, чтобы её решить. Теперь у вас две проблемы.

Авторский пост защищен лицензией CC BY 4.0 .