Регулярные выражения

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

Регулярные выражения - это шаблоны поиска подстроки в строке. Например, Вам в тексте нужно найти все слова, начинающиеся на букву 'a' или все слова не менее 4 букв и т.д. В ZennoPoster регулярные выражения помогут Вам, например, найти ссылку подтверждения в письме или текстовую каптчу на web странице. А если Вы будете писать парсер, то без регулярных выражений точно не обойдетесь.

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

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

  • Поиск подстроки в тексте файла.

  • Поиск письма подтверждения регистрации в ящике.

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

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

  • Парсинг web страниц.

  • И ещё много всяких полезных применений.

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

Для составления регулярных выражений Вы можете воспользоваться помощником - Конструктором регулярных выражений. Открыть его можно, нажав кнопку Тестер рег. выражений в меню расширенный редактор:

Или перейти из окна получить почту, нажав Здесь нет того, что мне нужно:

В левой области открывшегося окна вставляйте текст, который будете парсить. Чаще всего регулярное выражение для парсинга текста можно составить, используя начало или конец искомого текста, а так же текст, который стоит перед искомым текстом или после него. Для этого, под полем регулярного выражения Вы найдете четыре соответствующих поля, при добавлении туда соответствующего текста Вы увидите, как вверху собирается регулярное выражение.

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

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

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

Программа позволяет использовать Групповые регулярные выражения и сохранить сразу несколько результатов одновременно. Далее результаты можно сохранить по группам в переменные с выбором номера совпадения, а так же в таблицу с возможностью исключения столбцов.

Обратите внимание

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

Основные команды

Также Вы можете самостоятельно попробовать составить регулярное выражение, воспользовавшись следующими советами:

  • Простейшее регулярное выражение можно записать так: abc

Этому выражению соответствует строка abc. Т.е. регулярное выражение, написанное текстом без команд ищет свой текст

  • Квадратные скобки ограничивают поиск теми символами, которые в них заключены: [abc]

В данном случае будет найдено подстрока состоящая всего из одной буквы a, b или c. Например, регулярное выражение [abc]d найдёт ad, bd или cd

  • Точка в регулярном выражении соответствует любому символу, кроме '\n'

Т.е., задав регулярное выражение '.', Вы найдёте любой символ кроме переноса. А задав выражение «» - любую трехбуквенную подстроку. Регулярное выражение ab.. найдёт Вам в тексте подстроки из 4-х букв начинающиеся на ab

  • В регулярном выражении можно использовать символ '|', действующий как оператор OR (или)

К примеру, следующее регулярное выражение ищет в строке подстроки ru, com или net: (ru|com|net)

  • Для исключения последовательности символов из поиска перед ней ставится символ ^, например:

[^аbcd] (или [^а-d]) - соответствует любому символу, кроме a,b,c,d. Обратите внимание, что символ ^ находится внутри квадратных скобок, так как только в этом случае он имеет значение не

  • Регулярное выражение можно уточнить при помощи символов +, ?, *, например:

a+ - одна или более буква a (строки aaaa и aa соответствуют этому выражению, а строка hello или a - нет)

a? - ноль или одна буква а. Например, регулярным выражением 123a+ мы ищем любую подстроку, которая начинается на 123, и, возможно, заканчивается на a (или нет)

a* - ноль или более а

  • Можно указать количество искомых символов, или диапазон, например:

xy{2} - соответствует строке, в которой за x следует два y

xy{2,} - соответствует строке, в которой за x следует не менее двух y (может быть и больше)

xy{2,6} - соответствует строке, в которой за x следует от двух до шести y

  • Для указания количества вхождений не одного символа, а их последовательности, используются круглые скобки:

x(yz){2,6} - соответствует строке, в которой за x следует от двух до шести последовательностей yz

x(yz)* - соответствует строке, в которой за x следует ноль и более последовательностей yz

  • В регулярном выражении можно указать, должно ли конкретное подвыражение встречаться в начале, в конце строки или и в начале и в конце строки. Символ ^ соответствует началу строки, знак доллара $ соответствует концу строки:

^xy - соответствует любой строке, начинающейся с xy. Обратите внимание, что в этом случае символ ^ ставится за пределами выражения в скобках, к примеру ^[a-z]

xy$ - соответствует любой строке, заканчивающейся на xy

  • В тех случаях, когда нужно сопоставить выражение строке, в которой встречаются спецсимволы, такие как $, ^, { и т. д., перед ними ставится символ обратной косой черты «\».

Например, для того, чтобы найти в строке символ $, в регулярном выражении нужно написать \$

  • Еще несколько спец. символов, которые могут понадобиться:

\w - слово (цифра или буква)
\W - не слово (не цифра и не буква)
\d - десятичная цифра
\D - не десятичная цифра
\s - пустое место (пробел, \f, \n, \r, \t, \v)
\S - не пустое место (не пробел, не \f, не \n, не \r, не \t, не \v)

Пользователи рекомендуют

Регулярные выражения 10 минут на урок
Википедия
Много полезного
Шпаргалка по регулярным выражениям