Bas конструктор регулярных выражений

Обновлено: 02.05.2024

Регулярные выражения - это своеобразный фильтр для поиска текстовых строк, соответствующий требуемым условиям. Встроенный конструктор регулярных выражений позволит быстро создавать правила, не вникая во все тонкости их составления.

Где используются регулярные выражения?

Извлечение информации со страниц сайта

Фильтрация данных в списках, таблицах

Поиск письма и\или ссылки подтверждения регистрации;

Поиск конкретного фрагмента в тексте

Поиск строк для удаления в списках;

И множество других полезных применений

Как быстро составить регулярное выражение в ZennoPoster?

Для их составления вы можете воспользоваться помощником - Тестером регулярных выражений. Его можно найти в меню Инструменты → Тестер рег. выражений

Окно Тестера регулярных выражений

Вкладки

Вы можете одновременно работать над несколькими регулярными выражениям в разных вкладках. В качестве имени вкладки используется текст регулярного выражения.

История

Сюда сохраняются все выражения, которые Вы проверяли с помощью кнопки Тест.

Текст регулярного выражения

Тут будет находиться текст регулярного выражения. Вы можете редактировать текст в этом поле.

При внесении изменений в поля и чекбоксы из группы Помощник по созданию регулярных выражений все правки, которые Вы вносили в текст выражения вручную, будут утеряны!

Кнопка Тест

После нажатия выражение из поля Текст регулярного выражения применится к Текст для обработки. Что из этого получилось можно найти в Результат обработки.

Перед искомым текстом всегда есть, Это идёт после искомого текста

Этот текст ищется, но не будет включён в результат работы выражения.

Искомый текст всегда начинается с, Этим заканчивается искомый текст

Данный текст включается в результат работы.

Разрешить переносы

Включение\отключение многострочного поиска.

Самое короткое совпадение

При включении данной опции, в результатах мы получим самую короткую подстроку, соответствующую составленному выражению.

Текст для обработки

В это поле нужно ввести текст, по которому будет производиться поиск текста.

Данные в это поле можно внести прямо из переменной проекта: ПКМ=>Установить значение из переменной.

Возможность установить значение из переменной добавлена в ZennoPoster 7.4.0.0

В выпадающем списке будут отображены переменные текущего активного проекта.

Показывать специальные символы

Стоит ли отображать переносы строки, табы (и некоторые другие символы) в виде специальных символов?

Выключено

Включено

Результат обработки

Вкладка Совпадения

Здесь будет отображён результат применения регулярного выражения к тексту.

Вкладка Группы

Сюда попадут результаты работы в случае применения Групповых регулярных выражений. Пример таких выражений можно найти в описании экшена Обработка текст => Regex => В переменные.

Пример использования

Давайте разберём на примере конкретной и часто встречающейся задачи – парсинг ссылок. Допустим, мы получили HTML какого-то DIVа или весь DOM страницы и нам нужно спарсить все ссылки с этого кода и сохранить их в список.

Вставляем в поле наш исходный код в котором будем искать ссылки (быстро вставить код текущей активной вкладки в Тестер можно с помощью окна Просмотр текста страницы ).

Укажем подстроку, которая обычно идет перед ссылкой, а именно тег a href=” .

Добавим кавычки, которыми закрывается строка ссылки. Не забываем галочку «Самое короткое совпадение», ведь нам нужно собрать строку только между двумя крайними кавычками.

Нажмём кнопку «Тест» и в поле «Результат обработки» появится нужный нам список из ссылок (если есть совпадения). Если получилось что-то не то, попробуйте изменить условия поиска.

Можем скопировать готовое регулярное выражение и применить его в своём шаблоне. Например, в действии Обработка текста → Regex

Регулярное выражение ищет столько подстрок, сколько есть в тексте. Если нужно взять какой-то конкретный номер совпадения, пользуйтесь диапазонами.

Символы со специальным значением

Большинство символов в регулярном выражении представляют сами себя за исключением специальных символов [ ] \ / ^ $ . | ? * + ( ) < >, которые могут быть экранированы символом \ (обратная косая черта) для представления самих себя в качестве символов текста. То есть простейшее регулярное выражение можно записать так: abc , которому будет соответствовать строка abc.

Имеем список [[NEW_LIST_FOR_UP]] В списке вот такие данные:

Которое на выходе даёт мне айди вида:

Вот что мне надо делать с списком [[NEW_LIST_FOR_UP]] чтобы выполнить для каждого элемента списка такое регулярное выражение?

Разобрался для этого подойдёт в блоке "Регулярные выражения" - "Извлечь все данные" ))
А какие ещё есть способы?
В действиях "записи" тоже есть блок
http://clip2net.com/s/3Ht1Zt7
я пытаюсь применить прям к переменной через "Установить переменную" и через "Парсить строку" но всегда выходит ошибки. Вообщем хотелось бы увидеть пару примеров работы с регулярными выражениями в рамках использования BAS. Форум читал было пару примеров, но я не смог разобраться к сожалению.


Разобрался для этого подойдёт в блоке "Регулярные выражения" - "Извлечь все данные" ))
А какие ещё есть способы?
В действиях "записи" тоже есть блок
http://clip2net.com/s/3Ht1Zt7
я пытаюсь применить прям к переменной через "Установить переменную" и через "Парсить строку" но всегда выходит ошибки. Вообщем хотелось бы увидеть пару примеров работы с регулярными выражениями в рамках использования BAS. Форум читал было пару примеров, но я не смог разобраться к сожалению.

Извлечь все данные удобнее использовать со строковыми переменными. Со списками не так удобно, но тоже можно. Через foreach.
А так ещё есть xpath. Погугли. он тривиально осваивается.

так я и так парсингом через xpath получил список с данными, теперь дальше надо мне с этими данными работать, хотя может можно было сразу через xpath получить только нужные мне id, но я не смог и поэтому приходится изобретать велосипед) Ну и с регулярными выражениями столкнулся, хотелось бы подробнее о них узнать чтобы научиться их применять, ну и разобраться как они работают. Как и где их ещё можно в логике скрипта применять.


так я и так парсингом через xpath получил список с данными, теперь дальше надо мне с этими данными работать, хотя может можно было сразу через xpath получить только нужные мне id, но я не смог и поэтому приходится изобретать велосипед) Ну и с регулярными выражениями столкнулся, хотелось бы подробнее о них узнать чтобы научиться их применять, ну и разобраться как они работают. Как и где их ещё можно в логике скрипта применять.

Да, через xpath можно получить сразу нужный параметр. Вроде в конце шаблона надо добавить @имя_параметра. Не подскажу точно как. Наверняка гуглится )
Регулярные выражения могут помочь извлекать данные, например, из потрохов текста. К примеру, на почту приходит письмо с цифровым кодом подтверждения. Регуляркой можно выдернуть его сразу, даже если он не хранится в отдельном теге или параметре.

Имеем список [[NEW_LIST_FOR_UP]] В списке вот такие данные:

Которое на выходе даёт мне айди вида:

Вот что мне надо делать с списком [[NEW_LIST_FOR_UP]] чтобы выполнить для каждого элемента списка такое регулярное выражение?

Разобрался для этого подойдёт в блоке "Регулярные выражения" - "Извлечь все данные" ))
А какие ещё есть способы?
В действиях "записи" тоже есть блок
http://clip2net.com/s/3Ht1Zt7
я пытаюсь применить прям к переменной через "Установить переменную" и через "Парсить строку" но всегда выходит ошибки. Вообщем хотелось бы увидеть пару примеров работы с регулярными выражениями в рамках использования BAS. Форум читал было пару примеров, но я не смог разобраться к сожалению.


Разобрался для этого подойдёт в блоке "Регулярные выражения" - "Извлечь все данные" ))
А какие ещё есть способы?
В действиях "записи" тоже есть блок
http://clip2net.com/s/3Ht1Zt7
я пытаюсь применить прям к переменной через "Установить переменную" и через "Парсить строку" но всегда выходит ошибки. Вообщем хотелось бы увидеть пару примеров работы с регулярными выражениями в рамках использования BAS. Форум читал было пару примеров, но я не смог разобраться к сожалению.

Извлечь все данные удобнее использовать со строковыми переменными. Со списками не так удобно, но тоже можно. Через foreach.
А так ещё есть xpath. Погугли. он тривиально осваивается.

так я и так парсингом через xpath получил список с данными, теперь дальше надо мне с этими данными работать, хотя может можно было сразу через xpath получить только нужные мне id, но я не смог и поэтому приходится изобретать велосипед) Ну и с регулярными выражениями столкнулся, хотелось бы подробнее о них узнать чтобы научиться их применять, ну и разобраться как они работают. Как и где их ещё можно в логике скрипта применять.


так я и так парсингом через xpath получил список с данными, теперь дальше надо мне с этими данными работать, хотя может можно было сразу через xpath получить только нужные мне id, но я не смог и поэтому приходится изобретать велосипед) Ну и с регулярными выражениями столкнулся, хотелось бы подробнее о них узнать чтобы научиться их применять, ну и разобраться как они работают. Как и где их ещё можно в логике скрипта применять.

Да, через xpath можно получить сразу нужный параметр. Вроде в конце шаблона надо добавить @имя_параметра. Не подскажу точно как. Наверняка гуглится )
Регулярные выражения могут помочь извлекать данные, например, из потрохов текста. К примеру, на почту приходит письмо с цифровым кодом подтверждения. Регуляркой можно выдернуть его сразу, даже если он не хранится в отдельном теге или параметре.

Имеем список [[NEW_LIST_FOR_UP]] В списке вот такие данные:

Которое на выходе даёт мне айди вида:

Вот что мне надо делать с списком [[NEW_LIST_FOR_UP]] чтобы выполнить для каждого элемента списка такое регулярное выражение?

Разобрался для этого подойдёт в блоке "Регулярные выражения" - "Извлечь все данные" ))
А какие ещё есть способы?
В действиях "записи" тоже есть блок
http://clip2net.com/s/3Ht1Zt7
я пытаюсь применить прям к переменной через "Установить переменную" и через "Парсить строку" но всегда выходит ошибки. Вообщем хотелось бы увидеть пару примеров работы с регулярными выражениями в рамках использования BAS. Форум читал было пару примеров, но я не смог разобраться к сожалению.


Разобрался для этого подойдёт в блоке "Регулярные выражения" - "Извлечь все данные" ))
А какие ещё есть способы?
В действиях "записи" тоже есть блок
http://clip2net.com/s/3Ht1Zt7
я пытаюсь применить прям к переменной через "Установить переменную" и через "Парсить строку" но всегда выходит ошибки. Вообщем хотелось бы увидеть пару примеров работы с регулярными выражениями в рамках использования BAS. Форум читал было пару примеров, но я не смог разобраться к сожалению.

Извлечь все данные удобнее использовать со строковыми переменными. Со списками не так удобно, но тоже можно. Через foreach.
А так ещё есть xpath. Погугли. он тривиально осваивается.

так я и так парсингом через xpath получил список с данными, теперь дальше надо мне с этими данными работать, хотя может можно было сразу через xpath получить только нужные мне id, но я не смог и поэтому приходится изобретать велосипед) Ну и с регулярными выражениями столкнулся, хотелось бы подробнее о них узнать чтобы научиться их применять, ну и разобраться как они работают. Как и где их ещё можно в логике скрипта применять.


так я и так парсингом через xpath получил список с данными, теперь дальше надо мне с этими данными работать, хотя может можно было сразу через xpath получить только нужные мне id, но я не смог и поэтому приходится изобретать велосипед) Ну и с регулярными выражениями столкнулся, хотелось бы подробнее о них узнать чтобы научиться их применять, ну и разобраться как они работают. Как и где их ещё можно в логике скрипта применять.

Да, через xpath можно получить сразу нужный параметр. Вроде в конце шаблона надо добавить @имя_параметра. Не подскажу точно как. Наверняка гуглится )
Регулярные выражения могут помочь извлекать данные, например, из потрохов текста. К примеру, на почту приходит письмо с цифровым кодом подтверждения. Регуляркой можно выдернуть его сразу, даже если он не хранится в отдельном теге или параметре.

Должен находиться внутри квадратных скобок (иначе интерпретируется как граница слова).

Например, последовательность \cM\cJ соответствует управляющим символам CR LF.

Эквивалентно \x01 … \x1A.

Символьные классы POSIX

Позиция внутри строки

Представление Позиция Пример Соответствие
^ Начало строки ^a a aa aaa
$ Конец строки a$ aaa aa a
\b Граница слова a\b aa a aa a
\ba a aa a aa
\B Не граница слова \Ba\B a a a a a a
\G Предыдущий успешный поиск \Ga aaa aaa (поиск остановился на 4-й позиции — там, где не нашлось a)

Представление символов по их коду

Квантификация (поиск последовательностей)

Представление Число повторений Пример Соответствие
n> Ровно n раз colour colouuur
m,n> От m до n включительно colour colouur, colouuur, colouuuur
m,> Не менее m colour colouur, colouuur, colouuuur и т. д.
n> Не более n colour color, colour, colouur, colouuur

Представление Число повторений Эквивалент Пример Соответствие
* Ноль или более colou*r color, colour и т. д.
+ Одно или более colou r colour, colouur и т. д. (но не color)
? Ноль или одно colou?r color, colour

Перечисление

Вертикальная черта разделяет допустимые варианты. Например, gray|grey соответствует gray или grey. Следует помнить, что перебор вариантов выполняется слева направо, как они указаны.

Если требуется указать перечень вариантов внутри более сложного регулярного выражения, то его нужно заключить в группу. Например, gray|grey или gr(a|e)y описывают строку gray или grey. В случае с односимвольными альтернативами предпочтителен вариант gr[ae]y, так как сравнение с символьным классом выполняется проще, чем обработка группы с проверкой на все её возможные модификаторы и генерацией обратной связи.

Читайте также: