Разделы портала

Онлайн-тренинги

.
Мягкое введение в Regex
04.03.2021 00:00

Автор: Кристин Джеквони (Kristin Jackvony)
Оригинал статьи
Перевод: Ольга Алифанова

По моему опыту, от работы с регулярными выражениями у всех болит голова. Никто не хочет разглядывать ^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$ и выяснять, что это значит!

Несмотря на это, регулярные выражения – мощный инструмент, и неплохо бы знать, как им пользоваться, даже если вы (как и большинство) не эксперт в этом вопросе. Эта статья – очень мягкое введение в регулярные выражения. Встретившись с ними в тестировании, вы будете чувствовать себя более уверенно.

Регулярные выражения – это просто последовательность символов, задающая шаблон поиска. Они очень полезны для редактирования строки или проверки, соответствует ли номер телефона, дата или индекс приемлемому шаблону.

Второе, что нужно о них знать: ими намного проще пользоваться, когда у вас есть проверочный инструмент! Мне нравится regexpal.com, но в сети множество других вариантов.

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

^ : Символ "карет" означает, что вы хотите найти совпадения с началом слова. К примеру, если вы используете шаблон ^ball, вы получите совпадения со словами ball и balloon, но не со словом football, потому что он не начинается с ball.

$: Символ доллара означает, что вы хотите найти совпадения с концом слова. Паттерн, заканчивающийся на ball$, найдет football, но не найдет balloon, так как это слово не начинается с ball.

. : Символ точки – совпадение с любым символом. Его можно использовать, когда один из символов в строке варьирует. Паттерн foo.ball найдет football и foosball.

*: Символ звездочки означает, что символ должен совпасть один или более раз. В паттерне fo*tball буква о должна совпасть один или более раз. Этот паттерн найдет fotball, football, и даже foooooooootball.

\d: Обратная косая черта и d – совпадение с любой цифрой. Паттерн football\d совпадет с football1, football2, football3, и так далее, но не с football или football!.

\w: Обратная косая черта и w – совпадение с любым символом из базового латинского алфавита. При поиске паттерна 12345\w найдутся 12345a, 12345b, 12345z, и так далее, но не 123456 или 12345!.

\s: Обратная косая черта и s – это пробел. Паттерн foot\sball совпадет с foot ball, но не с football.

[ ]: Символы квадратных скобок означают набор символов. Если вы хотите найти совпадения с любым числом от 1 до 5, то можно использовать [12345]. Паттерн football[12345] совпадет с football1, но не с football6.

|: Вертикальная черта – паттерн или-или. Паттерн cat|dog совпадет с cat, а также совпадет с dog.

( ): Скобки группируют элементы паттерна, как в математических выражений. Допустим, вы хотите найти ноябрь или декабрь, но не сентябрь. Вы не можете использовать паттерн брь – он совпадет со всеми месяцами. Но можно воспользоваться (ноя|дека)брь – использование скобок с вертикальной чертой означает, что месяц может начинаться с ноя или с дека, и заканчиваться на брь.

Я специально приводила очень простые примеры – это настолько широкая тема, что на нее можно потратить месяцы и сильно запутаться. Однако этих распространенных символов должно хватить, чтобы вы немного освоились. Поиграйте с проверкой Regex, чтобы попрактиковаться, а если хотите узнать больше – попробуйте воспользоваться интерактивным обучением вроде regexone.com.

Обсудить в форуме