Ако сте програмист, има вероятност вече да знаете какво представляват регулярните изрази (регулярни изрази). Regex шаблоните са внедрени в почти всеки основен език за програмиране, но въпреки това силата и гъвкавостта на тези модели са неразпознати от повечето разработчици.
Това ръководство е свързано с регулярни изрази и как можете да ги използвате в езика за програмиране Python.
Какво представляват регулярните изрази?
Регулярните изрази са модели, които помагат на потребителя да съчетава комбинации от символи в текстови файлове и низове. Можете да използвате регулярни изрази, за да филтрирате или да намерите конкретен модел в изхода на команда или документ.
Има различни случаи на използване на регулярни изрази, като най-известните са командата grep в Linux. Други приложения включват филтриране на информация, като извличане на имейл адреси и телефонни номера от дъмп на данни.
Основната причина, поради която много разработчици се отклоняват от регулярните изрази, е липсата на информираност за силата на съвпадението на шаблоните. Някои дори намират регулярните изрази за объркващи поради огромното количество символи и последователности, използвани в шаблоните.
Каквато и да е причината, регулярните изрази са и ще бъдат един от най-важните аспекти на програмирането, за които всеки трябва да знае.
Регулярни изрази: съвпадение на символи и последователности
Regex е съвсем нов език сам по себе си. Регулярният механизъм интерпретира модели, състоящи се от няколко знака, снабдени със специфични значения. Основни литерали, като буквено-цифрови знаци, съвпадат сами. Но сложни символи като $, *, +, {и т.н. помощ при съвпадение от по-висок ред.
- Звездичка (*): Съвпада с предходния знак нула или повече пъти. Буквалното значение на символа ще бъде "Елемент, умножен n пъти". Например, ако регулярният израз е abc *, съответстващите низове ще бъдат ab, abc, abcc, abccc, abcccc и т.н. Изразът [bc] * ще съвпада с bc, bcbc, bcbc и т.н.
- Плюс (+): Съответства на предходния знак един или повече пъти. Работата на + характер е подобен на *, но + символът пропуска шаблона, ако знакът не се появи. Например, abc + ще съответства на abc, abcc, abccc и т.н. но не ab.
- Въпросителен знак (?): Съвпада с предходния знак нула или един път (и). Например моделът abc? ще съответства само на ab и abc.
- Тръба (|): Използва се като двоичен файл ИЛИ оператор. Съответства на който и да е от символите, предхождащи и следващи тръбата. Например, a | b ще съответства или на a, или на b.
- Точка (.): Съвпада с герой, чиято самоличност е неизвестна. Например, a.c ще съвпада с aac, abc, acc, a2c и т.н.
- Морков (^): Съвпада с първия символ в шаблона. Например, ^ Ра ще съвпада с думи, започващи с Ра като Заек, Енот и Случайно.
- Долар ($): Съответства на последния знак в шаблона. Например, $ ще съвпада с думи, завършващи с an като Ван, Дан и План.
- Тире (-): Използва се за определяне на диапазон от знаци. Например, [0-9] ще съответства на всички едноцифрени цифрови знаци.
Специални последователности, използвани в моделите на регулярни изрази, са:
- \ A: Връща съвпадение, ако следващите символи присъстват в началото на низа. Например, \ АТо ще съвпада с думи, започващи с The като The, Them, They и т.н.
- \ b: Връща съвпадение, ако знакът е намерен в началото или в края на дума. Например, \ bmad и луд \ b ще съвпада с думи като направени и номад съответно.
- \ B: Връща съвпадение, ако знакът не е намерен в началото или края на дума.
- \д: Съвпада с числови символи, присъстващи в низа. Например, /d* ще съвпада с числа като 1, 12, 1232 и т.н.
- \Д: Съвпада с нецифрени знаци в низа. /Д ще съответства на a, b, c, f и т.н.
- \с: Съответства на празен знак в текста.
- \С: Съответства на символ, който не е интервал в текста.
- \ w: Връща съвпадение, ако низът съдържа буквено-цифрови знаци, включително долни черти. Например, \ w ще съответства на a, b, c, d, 1, 2, 3 и т.н.
- \ W: Връща съвпадение, ако низът не съдържа буквено-цифрови знаци или долни черти.
- \ 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 е чудесен инструмент, с който разполагате. Можете бързо да напишете някакъв код, за да филтрирате или замените конкретни модели в документа.
Запаметяването на всички символи и съвпадение на последователностите може да бъде трудно, ако тепърва започвате с регулярния израз. За да се подобрите в регулярните изрази, позоваването на списък от символи, методи и последователности от време на време определено ще ви помогне в дългосрочен план.
Използвайте този списък с регулярни изрази на Python, за да можете да се подобрите при използването на този универсален език за програмиране.
Прочетете Напред
- Програмиране
- Програмиране
- Python

Deepesh е младши редактор за Linux в MUO. Той пише информационно съдържание в интернет повече от 3 години. В свободното си време той обича да пише, да слуша музика и да свири на китара.
Абонирайте се за нашия бюлетин
Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и ексклузивни оферти!
Още една стъпка…!
Моля, потвърдете имейл адреса си в имейла, който току-що ви изпратихме.