Регулярные выражения в платформе 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.: Оптимистичное (и классическое) начало главы про регулярные выражения из документации на ИТС:
У вас есть проблема. Вы решили использовать регулярные Выражения, чтобы её решить. Теперь у вас две проблемы.