5 минут на изучение регулярных выражений

Зачем нужна такая недружественная новичку тема ?! Потому что вы научитесь проверять и искать текст на всех языках программирования! Вот почему!

Кроме того, вы создаете шаблоны проверки один раз и используете их до бесконечности и далее.

Хотя это сложно изучить, потому что синтаксис похож на иероглифы в «В поисках утраченного ковчега», истинная ценность заключается в том, чтобы иметь этот инструмент в вашем поясе с инструментами.

Мотивация

Как я уже упоминал, это универсальный инструмент для синтаксического анализа текста на любом языке программирования. Швейцарский армейский нож кодирования!

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

JavaScript .search / .match / .replace

Искать в JavaScript с помощью регулярных выражений (RegExp) очень просто:

Это используется для поиска единственного совпадения и возврата индекса. Если вы хотите большего, например, жадный король Мидас, тогда вы должны использовать match:

Вы также можете напрямую поменять местами элементы строки. Когда кто-то не соблюдает вашу академическую оценку и вы должны исправить это, используя replace:

Получите знания о написании регулярных выражений

Мы помещаем регулярное выражение между двумя косыми чертами /.../. Точное совпадение выглядит так:

Вы уже видели это раньше. Но теперь мы собираемся расширить эту базовую операцию с помощью флагов.

Флаги, также известные как модификаторы узора

Мы применяем флаги после фразы регулярного выражения /.../. Буква g используется для глобального поиска нашего шаблона (несколько результатов).

Я поместил в longTextFromWikipedia первый абзац статьи об Индиане Джонсе для поиска всех вхождений Джонса и применил флаг g.

Комбайнеры (сложный поисковый шаблон)

Логическое ИЛИ

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

Используемый RegExp - /Jones|Jr/g.

Группировка

Условия группировки очень мощные, как Святой Грааль! Это позволяет нам создавать такие подмножества, как: поиск профессора доктора Генри Джонса, а также поиск Индианы Джонса.

Используемый RegExp /(Henry|Indiana) Jones/g.

Квантификаторы

Квантификаторы - это здорово! Они позволяют вам решить, как часто разрешено возникновение паттерна для получения результата. Лучшее сравнение - это второй фильм об Индиане Джонсе, когда Уилли Скотт кричит Индиеееееееее!

Несколько квантификаторов позволяют нам определить, насколько часто событие является приемлемым.

  • ? 0 или 1 раз
  • * 0 или много раз
  • + 1 или много раз

Явные подсчеты

С явным подсчетом мы можем найти только самые длинные крики, и мы говорим, что начинаем с 2 и заканчиваем 10. Тогда синтаксис /regEx{MIN,MAX}/.

Если нас не волнует максимальное число, оставьте поле MAX незаписанным, как вы видите в GIF.

Экранирование персонажей в классе

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

Это еще не конец, если вы подписались сейчас, вы также можете избежать целых классов символов, таких как цифры или буквы!

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

Извините, я слишком много смотрел телеторговый канал в детстве.

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

Наборы символов

Мы можем определить наборы символов, которые хотим искать, с помощью [...].

В то время как /Henry/ ищет строку «Генри», [Henry] ищет все буквы в прямоугольных скобках, то есть H, e, n, r & y.

Отвергнуть набор

Имея ^ перед нашим набором, мы создаем отрицание и исключаем набор символов вместо его поиска.

Шпаргалка и песочница для экспериментов

Сначала песочница: www.regexr.com (я сделал живые примеры с этой страницей).

Это моя любимая шпаргалка, как ни странно, мне нравится розовый 🤷‍♂️

Заключение

Регулярные выражения легко выучить, но их сложно освоить!

Теперь у вас есть нога в двери, и это уже сэкономит вам огромное количество времени, потому что вы можете использовать их на любом языке программирования, и они менее подвержены ошибкам, чем другие механизмы поиска (например, INSTR и SUBSTR в SQL).

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

Надеюсь, вы смогли получить некоторые знания, случайно не активировав некоторые ловушки, и с большим удовольствием прочитали эту статью :)

Если вам нужен более качественный обработанный программный контент, посетите мои курсы на Udemy.

использованная литература

Инструмент песочницы регулярных выражений: https://regexr.com/
Шпаргалка по регулярным выражениям: https://cheatography.com/davechild/cheat-sheets/regular-expressions/