Доброе Утро! Подскажите, кто-то знает существует ли программка (не онлайн, а с инсоляцией на комп) для визуального тестирования регулярных выражений перед их вставкой в программный код VBA Excel? Заранее большое спасибо.
Вот предлагал ZVI На всякий случай инфо для тех, кто осваивает регулярные выражения: существуют различные утилиты для облегчения выбора шаблона (выбор описанных текстом шаблонов из меню) и оперативного тестирования. Одна из них, бесплатная, удобная, но на английском: Regular Expression Laboratory http://www.silveragesoftware.com/rxl.html Regular Expression Laboratory
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
именно в help меня и выкинуло сразу после установки - мне понравилось всё, что там
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Насколько помню в RegExp VB недоступно использование просмотра "назад". Вы ведь это пытаетесь сделать? Или что Вы пытаетесь с чем сравнить выражением: ?<=a
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Используйте консольку браузера, например Chrome (я так делаю иногда). Если консоль и онлайн не подходит, вот здесь это обсуждается: http://stackoverflow.com/questions/87350/what-are-good-grep-tools-for-windows Из ответов выделяются Cygwin и PowerGREP. Также есть RegexBuddy. Что-то платное, а что-то бесплетаное, выбор за вами.
И это я загадками говорю? Если ЧТО? Как можно сделать условие, на зная с чем сравнивать? Например: Если три первых символа равны "мам" или "пап" - то отбираем. А Вы что хотите сделать условием или? Отобрать? Удалить? Цель регулярного выражения? Каким должен быть результат в зависимости от исходной строки? Приведите строку из которой хотите что-то отобрать/удалить и напишите что должно в результате получиться.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
1. ГОТОВА КОНЦЕРВОВАНА РИБА У ГЕРМЕТИЧНО ЗАКРИТИХ ПОСУДИНАХ - "ПРЕСЕРВИ": -ШМАТОЧКИ ФІЛЕ ОСЕЛЕДЕЦЯ БЕЗ ШКІРИ В ОЛІЇ 500ГР; -ФІЛЕ ОСЕЛЕДЕЦЯ БЕЗ ШКІРИ В ОЛІЇ 750ГР;
1. ГОТОВА КОНЦЕРВОВАНА РИБА У ГЕРМЕТИЧНО ЗАКРИТИХ ПОСУДИНАХ - "ПРЕСЕРВИ": -ПРЕСЕРВИ РИБНІ ОСЕЛЕДЕЦЬ В ОЛІЇ 180ГР ТМ"ОХОТСКАЯ"-1ШТ; -ПРЕСЕРВИ РИБНІ ОСЕЛЕДЕЦЬ В ОЛІЇ З АРОМАТОМ ПАПРИКИ 180ГР ТМ"ОХОТСКАЯ"-1ШТ; -ПРЕСЕРВИ РИБНІ ОСЕЛЕДЕЦЬ З МОРСЬКОЮ КАПУСТОЮ 500ГР ТМ"ОХОТСКАЯ"-1ШТ; -ПРЕСЕРВИ РИБНІ ОСЕЛЕДЕЦЬ В ОЛІЇ "5 ПЕРЦІВ" 500ГР ТМ"NORVEN"-1ШТ; -ПРЕСЕРВИ РИБНІ ОСЕЛЕДЕЦЬ ПРЯНО-ПІКАНТНИЙ В ОЛІЇ 300ГР ТМ"NORVEN"-1ШТ; ВИРОБНИК: ТОВ "ЮФК" UA ЧАСТИНА МІСЦЯ - ВСЬОГО 5 БАНОК, ЗАПАКОВАНІ В ПОЛІМЕРНУ БАНКУ ОБТЯНУТІ П/П ПЛІВКОЮ, В ПІНОПЛАСТОВОМУ КОРОБІ З ЛЬОДОМ.
Само выражение работает но я бы хотела ещё предусмотреть разбитие строки по знаку "," но не так (.{16,}?)(?:;|,(?: {0,4}-| |$)|: {0,4}-)", а только в том случае, если между ":" и "." нет ";". То есть использовать условие ...Если то
Чего Вы отобрать хотите? Вопросительный знак перед скобкой зачем Вам? Какую роль он по-Вашему играет? Если вопр.знак стоит перед выражением, то после вопр.знака должен идти второй идентификатор: равно, воскл.знак, точка-с-запятой. И потом символы или выражение, которое должно быть после основного шаблона, но не должно быть включено в выборку. При этом порой в таком выражении что-то должно быть и перед вопр.знаком(основной шаблон). Иначе выражение просто не сработает или вообще будет считаться ошибочным. Например, возьмем шаблон: .Pattern = "iphone(?=5S|6)" он отберет iphone в строке "iphone5S" и "iphone4". При этом сами символы 5S и 4 не будут включены в выборку.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Давайте расскажу о регулярках. Есть два типа Lookaround'ов: LookBehind (вид с конца, в VBA не поддерживается), LookAhead (вид с начала, поддерживается).
LookAround'ы бывают также: Положительными (то есть рассматриваемое выражение будет ЧТО-ТО содержать), Отрицательными (то есть рассматриваемое выражение НЕ будет что-то содержать).
Эти две типологии комбинируются, позволяя выражать очень интересные вещи (например, positive lookahead, negative lookbehind...).
LookAround целесообразно (не обязательно, но мне это в свое время позволило лучше разобраться в сабже) использовать когда необходимо проверить КАК МИНИМУМ 2 условия, иначе делается простой match.
LookAround хорош для валидации разного рода выражений, например, паролей. У меня на рабочем месте (условно) необходимо составлять пароль для входа в систему, который бы содержал не меньше 6 символов, минимум 1 из которых - цифра, минимум 1 - строчная буква, минимум 1 - заглавная буква. Вот такого рода условия видятся мне идеальным полем для использования lookaround'а. Ниже код, который используется для означенных lookaround'ов:
так,я уже совсем ничего не понимаю, то о чём Вы говорите: (?=шаблон) Позитивный просмотр вперёд Людовик(?=XVI) ЛюдовикXV, ЛюдовикXVI, ЛюдовикXVIII, ЛюдовикLXVII, ЛюдовикXXL (?!шаблон) Негативный просмотр вперёд (с отрицанием) Людовик(?!XVI) ЛюдовикXV, ЛюдовикXVI, ЛюдовикXVIII, ЛюдовикLXVII, ЛюдовикXXL (?<=шаблон) Позитивный просмотр назад (?<=Сергей )Иванов Сергей Иванов, Игорь Иванов (?<!шаблон) Негативный просмотр назад (с отрицанием) (?<!Сергей )Иванов Сергей Иванов, Игорь Иванов
У Вас совершенно непонятно зачем скобки после вопр.знака. Я уже написал, что после ? должны идти не скобки, а метасимвол добавочный, который укажет RegExp, что с этим ? делать. А после уже можно и скобки, если предполагается туда какое-то выражение отдельно запихнуть. Вам надо сначала книжку бы по регуляркам почитать. Поищите Бен Форта "RegExp за 10 минут". Кажется как-то так называется. Времени много не займет, но поможет освоить регулярки. Потому что сейчас получается, что Вас надо учить разбирать и работать с RegExp с нуля, т.к. Вы не понимаете что какой метасимвол должен делать и как его правильно применять.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...