Рубрики
Без рубрики

Для чего используются регулярные выражения? 10 приложений

Интернет полна учебников о регулярных выражениях. Но я понял, что большинство этих учебных пособий не хватает тщательной мотивации. Почему существуют регулярные выражения? Для чего они используются? Каковы практические приложения? Как-то, писатели этих учебных погашений считают, что читатели мотивированы по умолчанию для изучения технологии, которые сложны … Какие регулярные выражения используются? 10 приложений Подробнее »

Автор оригинала: Chris.

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

  • Почему существуют регулярные выражения?
  • Для чего они используются?
  • Каковы практические приложения?

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

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

Так каковы некоторые применения регулярных выражений?

Как вы прочитали статью, вы можете посмотреть видео мое объяснение:

Связанная статья: Python Regex SuperPower – Ultimate Guide

Вы хотите освоить сверхдержаву Regeex? Проверьте мою новую книгу Самый умный способ изучать регулярные выражения в Python С инновационным 3-ступенчатым подходом для активного обучения: (1) Изучение книги главы, (2) Решите головоломки кода и (3) Смотреть воспроизведение главы видео.

Вот TOC, который также дает вам быстрый обзор приложений Regex:

Поиск и заменить в текстовом редакторе

Наиболее простым приложением является поиск данного текста в вашем текстовом редакторе. Скажи, твой босс просит вас заменить все вхождения клиента «Максимальная мощность» с именем Max Power, Ph.D.D. Отказ

Вот как это будет выглядеть так:

Я использовал популярный текстовый редактор Notepad ++ (рекомендуется для кодеров). В нижней части окна «Заменить» вы можете увидеть выбор коробки «Регулярное выражение». Но в этом примере мы использовали самое простое регулярное выражение: простая строка.

Итак, вы ищете и замените все вхождения строки «Max Power» и вернуть его обратно на своего босса. Но ваш босс смотрит на ваш документ и говорит вам, что вы пропустили все вхождения только с «Макс» (Без фамилии «Power» ). Что вы делаете?

Просто, вы используете более мощное регулярное выражение: 'Максимальная мощность)?' а не только «Максимальная мощность» :

Не волнуйтесь, это не о конкретном регезесе 'Максимальная мощность)?' И почему это работает. Я просто хотел показать вам, что можно сопоставить все строки, которые либо выглядят так: «Максимальная мощность» Или, как это: «Макс» Отказ

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

Поиск вашей операционной системы для файлов

Это еще одно распространенное приложение: используйте регулярные выражения для поиска (и найти) определенные файлы в вашей операционной системе.

Например, это Парень попытался найти все файлы со следующими шаблонами имени файла:

abc.txt.r12222
tjy.java.r9994

Ему удалось сделать это в Windows, используя команду:

dir * /s/b | findstr \.r[0-9]+$

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

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

Поиск ваших файлов для текста

Но что, если вы не хотите найти файлы с определенным именем файла, но с определенным содержимым файла? Разве это не намного сложнее?

Как оказывается, это не так! Ну, если вы используете регулярное выражение и GREP.

Вот что Greep Guru сделает, чтобы найти все строки в файле 'haiku.txt' которые содержат слово «не» Отказ

Греп Это инструмент поиска пожилых файлов, написанный знаменитым компьютерным ученым Кен Томпсон Отказ И это еще более мощно, чем это: Вы также можете искать кучу файлов для определенного контента.

Версия Windows GreeP – Найти полезность.

Поисковые системы

Ну, используя регулярные выражения, чтобы найти контент в Интернете, считается Святой Грааль поиска. Но Web – это огромный зверь, и поддерживающий полноценный двигатель REGEX был бы слишком требовать для серверов Google. Это стоит много вычислительных ресурсов. Следовательно, никто на самом деле не предоставляет поисковой системе, которая позволяет всем командам Regex.

Тем не менее, веб-поисковые системы, такие как Google поддерживают ограниченное количество команд Regex. Например, вы можете найти запросы, которые не содержат конкретного слова:

Поиск «Джефф -Базос» даст вам все Джеффу, которые не заканчиваются Безосом. Если первоначальное имя доминирует так, используя расширенные операторы поиска довольно полезное расширение.

Вот глубокое руководство по поиску Google Это показывает, как использовать расширенные команды для поиска огромной сети еще быстрее.

С взрывом данных и знаниями, овладение поиском является критическим навыком в 21 веке.

Проверьте ввод пользователя в веб-приложениях

Если вы запускаете веб-приложение, вам нужно иметь дело с пользовательским входом. Часто пользователи могут поставить что-либо на поля ввода (даже Сценарии по перекрестному сайту взломать ваш веб-сервер). Ваше приложение должно подтвердить, что пользовательский ввод в порядке – в противном случае вы гарантированно сбиваете приложение или базу данных Backend или базу данных.

Как вы можете подтвердить ввод пользователя? Regex к спасению!

Вот как вы проверили,

  • Пользовательский ввод состоит только из строчных букв: [A-Z] + ,
  • Имя пользователя состоит только в строчных буквах, подчеркиваемых или цифр: [A-Z_0-9] + , или
  • Вход не содержит каких скобок: [^ \ (\)] + Отказ

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

Подумайте об этом: любое веб-приложение, которое обрабатывает пользовательский ввод нуждается в регулярных выражениях. Google, Facebook, Baidu, Wechat – все эти компании работают с регулярными выражениями для проверки их пользовательского ввода. Этот навык является дико важным для вашего успеха в качестве разработчика, работающего на тех компаниях (или любую другую веб-компанию для этого).

Угадай, что утверждает Ex Tech Google, является высшим навыком программиста? Вы поняли: регулярные выражения!

Извлечь полезную информацию с веб-сканерами

Хорошо, вы можете проверить ввод пользователя с регулярными выражениями. Но есть еще больше? Вы делаете ставку, есть.

Регулярные выражения не только имеют не только для проверки текстовых данных, а для извлечения информации из текстовых данных.

Например, скажем, вы хотите получить преимущество перед вашим соревнованием. Вы решили написать веб-сканет, который работает 24/7, исследуя подмножество веб-страниц. Веб-страница ссылки на другие веб-страницы. Перебирая из веб-страницы к веб-странице, ваш гусеничный вариант может изучить огромные части веб-полностью автоматизированного.

Представьте себе потенциал! Данные – класс активов 21-го века, и вы можете собрать этот ценный актив с вашим собственным веб-гусеником.

Веб-сканер может быть программой Python, которая загружает содержимое HTML на веб-сайте:

Ваш гусеник теперь может использовать регулярные выражения для извлечения всех исходящих ссылок на другие сайты (начиная с »

Скрепление данных и веб-соскоб

В предыдущем примере вы уже видели, как извлечь полезную информацию с веб-сайтов с веб-гусеником.

Но часто первый шаг - просто загрузить определенный тип данных из большого количества веб-сайтов с целью хранения его в базе данных (или электронной таблице). Но данные должны иметь определенную структуру.

Процесс извлечения определенного типа данных из набора веб-сайтов и преобразования его в нужный формат данных называется Веб-соскоб Отказ

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

Регулярные выражения очень помогают в обработке грязных текстовых данных. Существует множество различных приложений, таких как поиск названий куча статей блога (например, для SEO).

Минимальный пример использования Библиотека Regex Python Re Для веб-соскабливания следующие:

from urllib.request import urlopen
import re

html = urlopen("https://blog.finxter.com/start-learning-python/").read()

print(str(html))
titles = re.findall("\(.*)\", str(html))

print(titles)
# ['What's The Best Way to Start Learning Python? A Tutorial in 10 Easy Steps! | Finxter']

Вы извлеките все данные, которые заключены в открытие и закрытие титульных тегов: ... Отказ

Данные warngling.

Данные wrangling Это процесс преобразования необработанных данных в более полезный формат для упрощения обработки приложений ниже по потоку. Каждое данные ученые и машиностроения инженер знают, что очистка данных находится в основе создания эффективных моделей машинного обучения и извлечения понимания.

Как вы уже догадались, Data Wrungling сильно зависит от таких инструментов, как регулярные механизмы экспрессии. Каждый раз, когда вы хотите преобразовать текстовые данные из одного формата в другое, не смотрите не дальше, чем регулярные выражения.

В Python метод Regex Re.sub (шаблон, репрект, строка) преобразует . строка в новый, где каждое возникновение шаблон заменяется новой строкой Реп Отказ Вы можете узнать все о Метод замены на моем подробном руководстве в блоге (+ видео) Отказ

Таким образом, вы можете преобразовать валюты, даты или цены на акции в общий формат с регулярными выражениями.

Разборка

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

Вы можете спросить: что такое парсер в любом случае? И вы правы спрашивать (нет тупых вопросов). А Парсер Переводит строку символов в абстракт более высокого уровня, такой как формализованный язык (часто используя основную грамматику, чтобы «понять» символы). Вам понадобится парсер, чтобы написать свой собственный язык программирования, синтаксисной системы или текстового редактора.

Например, если вы пишете программу на языке программирования Python, это просто куча символов. Парсер Python приносит порядок в хаос и переводит ваши бессмысленные символы в более значимые абстракции (например, ключевые слова, имена переменной или определения функций). Затем это используется в качестве входа для дальнейших этапов обработки, таких как выполнение вашей программы.

Если вы смотрите, как реализуются парсеры, вы увидите, что они сильно полагаются на регулярные выражения. Это имеет смысл, потому что регулярное выражение может легко проанализировать и поймать части вашего текста. Например, чтобы извлечь имена функций, вы можете использовать следующее Regex в своем анализаторе:

import re

code = '''
def f1():
    return 1


def f2()
    return 2
'''

print(re.findall('def ([a-zA-Z0-9_]+)', code))
# ['f1', 'f2']

Вы можете увидеть, что наш Mini Parser извлекает все имена функций в коде. Конечно, это только минимальный пример, и это не будет работать на все случаи. Например, вы можете использовать больше символов, чем данные, чтобы определить имя функции.

Если вы заинтересованы в написании парсеров или изучения компиляторов, регулярные выражения являются одними из самых полезных инструментов в существовании!

Языки программирования

Да, вы уже узнали об парсерах в предыдущем моменте. И парсеры нужны для любого языка программирования. Положите его прямо: нет языка программирования в мире, который не полагается на регулярные выражения для их собственной реализации.

Но есть еще: регулярные выражения также очень популярны при написании кода в любом языке программирования. Некоторые языки программирования, такие как Perl, предоставляют встроенные функциональные возможности REGEX: вам даже не нужно импортировать внешнюю библиотеку.

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

Синтаксис выделения систем

Вот как выглядит моя стандартная среда кодирования:

Любой редактор кода предоставляет возможности выделения синтаксиса:

  • Имена функций могут быть синевыми.
  • Строки могут быть желтыми.
  • Комментарии могут быть красными.
  • И нормальный код может быть белым.

Таким образом, чтение и запись кода становится гораздо более удобным. Более продвинутые идентификаторы, такие как Pycharm, обеспечивают динамические подсказки в качестве дополнительной функции.

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

Лексический анализ в компиляторе

В дизайне компилятора вам понадобится лексический анализатор:

Лексический анализатор должен сканировать и идентифицировать только конечный набор действительной строки/токена/лексемы, который принадлежит языку в руке. Он ищет шаблон, определяемый языковыми правилами.

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

Как получается, регулярные выражения являются золотым стандартом для создания лексического анализатора для компиляторов.

Я знаю, что это может звучать как очень конкретное приложение, но это важно, тем не менее.

Формальная теория языка

Теоретическая информатика - это основание всех информационных наук. Великие имена в информатике, Алан Turing , Церковь Алонзо и Стивен Клеен все провели значительное время и усилие, изучающие и развивающие регулярные выражения.

Если вы хотите стать отличным компьютерным ученым, вам нужно знать вашу справедливую долю теоретической информатики. Вам нужно знать о Формальная теория языка Отказ Вам нужно знать о регулярных выражениях, которые находятся в основе этих теоретических фондов.

Как регулярные выражения относятся к теории формальной языковой связи? Каждое регулярное выражение определяет «язык» приемлемых слов. Все слова, которые соответствуют регулярным выражению, находятся на этом языке. Все слова, которые не соответствуют регулярным выражению, не находятся на этом языке. Таким образом, вы можете создать точные наборы правил, чтобы описать любой формальный язык - просто используя мощность регулярных выражений.

Куда пойти отсюда?

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

Хотите узнать больше о том, как преобразовать свои компьютерные науки на навыки на деньги? Ознакомьтесь с моим бесплатным вебинаром, который показывает вам пошаговый подход для создания вашего процветающего онлайн-кодирования (работает из дома). Вам не нужно иметь какую-либо компьютерную науку. Единственное, что вам нужно, это амбиции, чтобы узнать.

Нажмите: https://blog.finxter.com/webinar-freelancer/

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

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