Ако сте програмист, има вероятност вече да знаете какво представляват регулярните изрази (регулярни изрази). Regex шаблоните са внедрени в почти всеки основен език за програмиране, но въпреки това силата и гъвкавостта на тези модели са неразпознати от повечето разработчици.

Това ръководство е свързано с регулярни изрази и как можете да ги използвате в езика за програмиране Python.

Какво представляват регулярните изрази?

Регулярните изрази са модели, които помагат на потребителя да съчетава комбинации от символи в текстови файлове и низове. Можете да използвате регулярни изрази, за да филтрирате или да намерите конкретен модел в изхода на команда или документ.

Има различни случаи на използване на регулярни изрази, като най-известните са командата grep в Linux. Други приложения включват филтриране на информация, като извличане на имейл адреси и телефонни номера от дъмп на данни.

Основната причина, поради която много разработчици се отклоняват от регулярните изрази, е липсата на информираност за силата на съвпадението на шаблоните. Някои дори намират регулярните изрази за объркващи поради огромното количество символи и последователности, използвани в шаблоните.

instagram viewer

Каквато и да е причината, регулярните изрази са и ще бъдат един от най-важните аспекти на програмирането, за които всеки трябва да знае.

Регулярни изрази: съвпадение на символи и последователности

Regex е съвсем нов език сам по себе си. Регулярният механизъм интерпретира модели, състоящи се от няколко знака, снабдени със специфични значения. Основни литерали, като буквено-цифрови знаци, съвпадат сами. Но сложни символи като $, *, +, {и т.н. помощ при съвпадение от по-висок ред.

  1. Звездичка (*): Съвпада с предходния знак нула или повече пъти. Буквалното значение на символа ще бъде "Елемент, умножен n пъти". Например, ако регулярният израз е abc *, съответстващите низове ще бъдат ab, abc, abcc, abccc, abcccc и т.н. Изразът [bc] * ще съвпада с bc, bcbc, bcbc и т.н.
  2. Плюс (+): Съответства на предходния знак един или повече пъти. Работата на + характер е подобен на *, но + символът пропуска шаблона, ако знакът не се появи. Например, abc + ще съответства на abc, abcc, abccc и т.н. но не ab.
  3. Въпросителен знак (?): Съвпада с предходния знак нула или един път (и). Например моделът abc? ще съответства само на ab и abc.
  4. Тръба (|): Използва се като двоичен файл ИЛИ оператор. Съответства на който и да е от символите, предхождащи и следващи тръбата. Например, a | b ще съответства или на a, или на b.
  5. Точка (.): Съвпада с герой, чиято самоличност е неизвестна. Например, a.c ще съвпада с aac, abc, acc, a2c и т.н.
  6. Морков (^): Съвпада с първия символ в шаблона. Например, ^ Ра ще съвпада с думи, започващи с Ра като Заек, Енот и Случайно.
  7. Долар ($): Съответства на последния знак в шаблона. Например, $ ще съвпада с думи, завършващи с an като Ван, Дан и План.
  8. Тире (-): Използва се за определяне на диапазон от знаци. Например, [0-9] ще съответства на всички едноцифрени цифрови знаци.

Специални последователности, използвани в моделите на регулярни изрази, са:

  1. \ A: Връща съвпадение, ако следващите символи присъстват в началото на низа. Например, \ АТо ще съвпада с думи, започващи с The като The, Them, They и т.н.
  2. \ b: Връща съвпадение, ако знакът е намерен в началото или в края на дума. Например, \ bmad и луд \ b ще съвпада с думи като направени и номад съответно.
  3. \ B: Връща съвпадение, ако знакът не е намерен в началото или края на дума.
  4. \д: Съвпада с числови символи, присъстващи в низа. Например, /d* ще съвпада с числа като 1, 12, 1232 и т.н.
  5. \Д: Съвпада с нецифрени знаци в низа. ще съответства на a, b, c, f и т.н.
  6. \с: Съответства на празен знак в текста.
  7. \С: Съответства на символ, който не е интервал в текста.
  8. \ w: Връща съвпадение, ако низът съдържа буквено-цифрови знаци, включително долни черти. Например, \ w ще съответства на a, b, c, d, 1, 2, 3 и т.н.
  9. \ W: Връща съвпадение, ако низът не съдържа буквено-цифрови знаци или долни черти.
  10. \ Z: Съвпада с символи в края на низ. Например, край \ Z ще съвпада с думи, завършващи с край като огъване, поправяне, тенденция и т.н.

Методи на Python за регулярни изрази

В Python, повторно библиотеката предоставя всички необходими функции и помощни програми, необходими за внедряване на регулярни изрази във вашите програми. Не е нужно да изтегляте библиотеката с помощта на pip, тъй като тя е предварително инсталирана с интерпретатора на Python.

За да импортирате повторно библиотека в Python, добавете следния код към вашия скрипт:

внос re

Имайте предвид, че докато предаваме регулярни изрази в Python, ние използваме сурови низове, тъй като те не интерпретират специални символи като и \T по различен начин.

Съвпада()

The re.match () метод в Python връща регекс обект, ако програмата намери съвпадение в началото на посочения низ. Тази функция приема два основни аргумента:

re.match (шаблон, низ)

...където модел е регулярният израз и низ е текстът, който трябва да се търси.

Погледнете кодовия фрагмент по-долу.

внос re
match = re.match (r'Word ', "Това изречение съдържа дума")
печат (съвпадение)

The r знак преди низът да означава суров низ.

Изход:

Нито един

Гореспоменатият код се връща Нито един защото Word не присъства в началото на низа.

Ако е намерено съвпадение, можете да отпечатате съвпадението с помощта на група () метод, който принадлежи на обекта на регулярно изражение.

внос re
match = re.match (r'Word ', "Думата е трудна за четене")
печат (match.group (0))

Изход:

Word

Търсене()

The re.search () метод приема подобни аргументи като re.match (). Докато match () връща само съвпадения, присъстващи в началото на низа, Търсене() ще върне съвпадения, намерени във всеки индекс в низа.

внос re
match = re.search (r'Word ', "Това изречение съдържа Word. Думата е трудна за четене. ")
печат (match.group (0))

Имайте предвид, че съвпада() и Търсене() методи ще върнат само едно съвпадение на шаблона. В гореспоменатия код, Word се появява два пъти. Но Търсене() функция ще съвпада само с първото появяване на думата.

Word

FindAll ()

Както вече се досещате, findall () метод връща всяко възможно съвпадение в низа.

внос re
match = re.search (r'Word ', "Това изречение съдържа Word. Думата е трудна за четене. ")
за елем в мача:
печат (елем)

Вместо да връща обект на регулярно изражение, функцията findall () връща списък с всички съвпадения. Можете да прегледате списъка с помощта на за цикъл в python.

Разделяне ()

Ако искате да разделите низ на поднизове, като използвате шаблон като разделител, тогава разделяне () функцията е тази, от която се нуждаете.

внос re
split = re.split (r'and ', "Тази дума и това и това са различни.")
печат (разделяне)

Изход:

['Тази дума "," онази "," това са различни. "]

Под ()

The под () метод позволява на потребителя да замести конкретна дума на мястото на шаблон. Необходими са следните аргументи.

re.sub (модел, замяна, низ)

Помислете за този кодов фрагмент:

внос re
result = re.sub (r'and ',' или ', "Дейв и Хари трябва да бъдат наказани.")
печат (резултат)

Изход:

Дейв или Хари трябва да бъдат наказани.

Компилиране ()

The re.compile () метод в повторно библиотеката позволява на потребителя да съхранява компилирана версия на шаблона на регулярния израз в паметта. След това, използвайки компилирания обект, потребителят може бързо да филтрира посочения текстов дъмп за съвпадащи модели.

внос re
pattern = re.compile ('Python')
match = pattern.findall ("Python е чудесен език за писане на скриптове. Python е лесен за научаване. ")
печат (съвпадение)

Тази функция се използва предимно за запазване на модели, които изискват много ресурси и се нуждаят от много време за изпълнение. Компилирането и запазването на шаблона като обект предварително решава този проблем.

Използвайте силата на Regex с Python

Когато работите с текстови файлове и изход, regex е чудесен инструмент, с който разполагате. Можете бързо да напишете някакъв код, за да филтрирате или замените конкретни модели в документа.

Запаметяването на всички символи и съвпадение на последователностите може да бъде трудно, ако тепърва започвате с регулярния израз. За да се подобрите в регулярните изрази, позоваването на списък от символи, методи и последователности от време на време определено ще ви помогне в дългосрочен план.

електронна поща
Cheath Sheet на Python RegEx за начинаещи програмисти

Използвайте този списък с регулярни изрази на Python, за да можете да се подобрите при използването на този универсален език за програмиране.

Прочетете Напред

Свързани теми
  • Програмиране
  • Програмиране
  • Python
За автора
Дийпеш Шарма (41 статии публикувани)

Deepesh е младши редактор за Linux в MUO. Той пише информационно съдържание в интернет повече от 3 години. В свободното си време той обича да пише, да слуша музика и да свири на китара.

Още от Deepesh Sharma

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и ексклузивни оферти!

Още една стъпка…!

Моля, потвърдете имейл адреса си в имейла, който току-що ви изпратихме.

.