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/