вторник, 19 июня 2012 г.

Тестирование RegExp

За последние несколько месяцев почти прекратил использовать надоевшие конструкции, вроде:
а=Найти(б); Если а>0 Тогда в=Лев(г,а)...

Не, то, чтобы я не знал о RegExp раньше. Еще до 1С активно использовал их в PHP, но в 1С как-то не использовал. Сам даже не знаю почему.

Использовать их не просто, а очень просто, например вот так (запишу, как памятку себе):
    РегЭксп = Новый COMОбъект("VBScript.RegExp");

    РегЭксп.IgnoreCase = Истина;
    РегЭксп.Global = Истина;
    РегЭксп.MultiLine = Ложь;

    РегЭксп.Pattern = "([^0]*)0+(.*)";

    Результат = РегЭксп.Replace(Номер, "$1-$2");
Код создания объекта очень простой, а в написании самой сложной части (шаблона) помогают программы тестирования регулярных выражений.
Лично я сейчас пользуюсь Rad Software Regular Expression Designer, так же совсем недавно я встретил интересную публикацию на инфостарт. Там можно скачать обработку 1С, предназначенную для тестирования RegExp.
Есть и платные аналоги.
С инструментом тестирования разработка поискового шаблона превращается в удовольствие.
Используйте RegExp-ы и хорошего вам дня, и хорошего кода.

6 комментариев:

Александр Кунташов комментирует...

У пользователей Снегопата есть возможность использовать конструктор регулярок прямо в конфигураторе: http://snegopat.ru/scripts/wiki?name=RegExpEditor.js (чтобы увидеть скриншот, надо залогиниться анонимусом с главной страницы).

Green FiLin комментирует...

А вы Снегопатом пользуетесь? А-то я все примеряюсь попробовать и купить, да как-то не доходят руки. Главный вопрос вот в чем. Штатная подсказка, которая после точки всплывает достаточно недурно работает, а у Снегопата с этим как? Не "проглатывает" ничего?
А-то стремно получить дополнительные супер-возможности, а родные потерять.
Хотя, думаю, опасения мои несколько надуманные. OpenConf у меня лучший друг. Но там и подсказки "родной" никакой не было.

Александр Кунташов комментирует...

Да, я пользователь с первых альфа-версий. Подсказка сейчас работает ровно так же, как 1Совская родная - потому что именно она и перехватывается. Умную работу "после точки" Александр только еще делает.

Родные возможности не теряются. Исключение составляет плагин SciColorerV8 (в отладчике с ним не очень удобно работать), но он лишь дополнительный бантик к редактору, да и недавно только зарелизился.

Лично для меня Снегопат уже окупился. Для меня была важна в первую очередь возможность автоматизация работы с кодом в конфигураторе - я ее получил и активно использую.

Краткий обзор скриптов я делал на Инфостарте: http://infostart.ru/public/104670/

Сейчас к ним добавился отличный скрипт для навигации по метаданным и скрипт для удобной фильтрации в окне справки.

В общем, советую попробовать, для начала хотя бы демку.

p.s.
Можно на "ты", если удобно.

Green FiLin комментирует...

О! Это последняя капля. Начинаю пробовать Снегопат. Спасибо.

rendevor комментирует...

Ух ты. Регекспы в 1с... Крутата.
А шаблоны программирования там уже есть? :)

Рекомендую использовать плагин к мозилле для тестирования регекспов. Если конечно регекспы напоминают posix/perl.

Green FiLin комментирует...

Мозилла все-таки не основной рабочий инструмент 1С-ника. =) Была бы веб-разработка. Так что в родной IDE 1С оно удобнее, чем отдельно открывать мозилку.
И, почему "напоминают"? Они самые и есть, объект-то стандартный VBScript.RegExp доступный из любого языка.

И, кстати, насчет шаблонов. Конечно есть, и во множестве. Но не древние "проделки GoF". GoF не пойдет, 1С не ООП, а DDD.
Но, все равно что-то есть. Например, я бы не побоялся сказать, что в 1С используется ограниченный MVVM.

Отправить комментарий