Инструменты пользователя

Инструменты сайта


Боковая панель

Перевод этой страницы:

ru:creating-a-regular-expressions

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

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

Регулярные выражения - это шаблоны поиска подстроки в строке. Например, вам в тексте нужно найти все слова, начинающиеся на букву '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)

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

ru/creating-a-regular-expressions.txt · Последние изменения: 2015/08/04 15:33 — vladz