Мягкое введение в 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. |