Ръководство за начинаещи по регулярни изрази с Python

Ръководство за начинаещи по регулярни изрази с Python

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





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





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

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





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

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



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

как бързо да получите серия от Snapchat

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

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.
  5. Точка (.): Съвпада с герой, чиято самоличност е неизвестна. Например, a.c ще съвпада с aac, abc, acc, a2c и т.н.
  6. Морков (^): Съвпада с първия знак в шаблона. Например, ^Ра ще съвпада с думи, започващи с Вън като заек, миеща мечка и случаен.
  7. Долар ($): Съвпада с последния знак в шаблона. Например, $ ще съвпада с думите, завършващи на а като Ван, Дан и План.
  8. Тире (-): Използва се за определяне на диапазон от знаци. Например, [0-9] ще съответства на всички едноцифрени цифрови знаци.

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

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

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

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





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

import re

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

Съвпада()

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

re.match(pattern, string)

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

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

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

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

Изход:

None

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

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

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

Изход:

Word

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

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

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

Word

FindAll ()

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

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

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

Разделяне ()

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

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

Изход:

['This word', 'that', 'this are different.']

Sub ()

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

re.sub(pattern, replacement, string)

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

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

Изход:

Dave or Harry must be punished.

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

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

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

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

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

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

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

Дял Дял Туит електронна поща Python RegEx Cheat Sheet за начинаещи програмисти

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

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

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

Още от Deepesh Sharma

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

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

Щракнете тук, за да се абонирате