а также обсудим плюсы и минусы использования регулярных выражений.
Что же такое символьный класс?
Бывают случаи, когда нам необходимо чтоб в каком-то
месте регулярного выражения был один символ [inaudible] из имеющегося у нас набора.
Так, например, если мы запишем [abcd1234] , это будет означать,
что в данном месте регулярного выражения может быть буква а,
буква б, цифра 1 или 3.
Любой из этих символов, но только один.
Также мы можем сокращать запись символьных классов,
если символы у нас идут подряд.
Мы можем написать a-d, 1-4.
Теперь мы знаем, что \d,
маленькая, это просто символьный класс,
в который входят все цифры или же его можно записать сокращенно,
символьный класс от нуля до девяти.
А \D большая означает обратный ему символьный класс.
Обратные символьные классы записываются,
используя крышку после открывающиеся скобки,
таким образом \D это не \d.
Если мы хотим, чтоб какой-то символ повторялся несколько раз,
мы можем написать плюс, звездочка, знак вопроса,
но если нам нужны более точные рамки,
то мы можем их сами указать используя фигурные скобки.
Например, если написать {1,2}, это будет означать,
что предыдущий символ может повторяться от одного до двух раз.
Если же написать только одну цифру,
то это точно квантификатор.
Если написать 2 в фигурных скобках,
то предыдущий должен повторяться ровно два раза.
Также можно опускать любую из границ и это будет означать либо
от нуля, либо до бесконечности.
Теперь мы понимаем, что звездочка, это квантификатор,
которая означает от нуля до бесконечности плюс от одного
до бесконечности и знак вопроса от нуля до единицы.
Давайте теперь попробуем, вооружившись этими знаниями,
найти все автомобильные номера, внутри имеющегося у нас текст.
Автомобильный номер имеет довольно таки жесткую структуру.
Он начинается с буквы, причем не любой, а одной из двенадцати,
который имеет одинаковое написание в русском и латинском алфавите,
затем идут три цифры, потом идут две буквы,
все из того же самого множества,
и затем идут две
или три цифры региона.
Давайте же напишем регулярные выражения, которые позволят нам найти все номера в тексте.
Здесь нам отлично подойдет символьный класс,
в котором мы заключим все возможные варианты букв в номере,
затем у нас должно идти цифра, причем ровно три штуки,
затем опять буквы из того же самого сильного класса,
но она должна повторяться два раза, что и мы укажем.
Затем должно быть две или три цифры.
Мы написали регулярное выражение,
которое должно найти все номера в этом тексте.
Давайте попробуем. Ищем шаблон, внутри текста, мы забыли импортировать модуль ре.
Мы нашли все номера внутри данного текста,
давайте теперь обсудим плюсы и минусы использования регулярных выражений.
Во-первых, регулярное выражение во многих случаях позволяет записать довольно
сложный поиск очень компактно.
Если бы мы пытались сделать это другими методами,
то у нас это заняло бы очень много строчек,
а так мы можем написать одно короткое регулярное выражение
и оно находит достаточно сложные вещи.
Но регулярные выражения не всегда бывают компактным.
Посмотрим даже на наше регулярное выражениея с автомобильными номерами,
оно получилось у нас достаточно длинным.
Если оно будет еще длиннее,
его будет действительно тяжело читать,
поэтому регулярные выражения бывают длинными и плохо читаемыми,
не всегда их стоит использовать.
Из плюсов регулярных выражений также можно отметить то,
что это штатный модуль питон, который всегда доступен,
вам не нужно ничего загружать, чтобы им пользоваться.
С помощью регулярных выражений можно не только находить,
но и заменять, и это мы научимся делать уже в следующем видео.
Регулярное выражение не является серебряной пулей,
ни любое соответствие можно найти с помощью регулярных выражений.
Некоторые данные имеют не
регулярную структуру и не подходят для поиска регулярными выражениями.
Также регулярные выражения бывает не слишком быстрые,
особенно если вы используете в них много таких символов, как точка-звездочка.
Дело в том, что точка звездочка сначала пытается
захватить как можно больше символов, а потом,
когда остаток регулярного выраженияй не находит никакого соответствия,
по тихонечку отдает назад по одному символу,
пытаясь найти соответствия в оставшейся части.
Это может быть достаточно долгим процессом,
особенно, если соответствие не найдется никогда.
Давайте подведем итоги, в этом занятии мы изучили символьные классы
и квантификаторы и также разобрали плюсы и минусы использования регулярных выражений,
а в следующем видео мы рассмотрим обратные ссылки и сложные замены,
замены содержимое групп, замены через функцию.
На этом мы закончим работу с регулярными выражениями.