Водич за почетнике у регуларним изразима са Питхоном

Водич за почетнике у регуларним изразима са Питхоном

Ако сте програмер, велике су шансе да већ знате шта су регуларни изрази (регек). Регек обрасци су имплементирани у скоро сваки маинстреам програмски језик, али ипак већина програмера не препознаје моћ и свестраност ових образаца.





Овај водич се бави регуларним изразима и начином на који их можете користити у програмском језику Питхон.





Шта су регуларни изрази?

Регуларни изрази су обрасци који помажу кориснику да усклади комбинације знакова у текстуалним датотекама и низовима. Можете користити регуларне изразе за филтрирање или проналажење одређеног узорка у испису наредбе или документа.





Постоје различити случајеви употребе регуларних израза, од којих је најпознатији греп команда у Линук -у . Друге апликације укључују филтрирање информација, као што је издвајање адреса е -поште и телефонских бројева из смешта података.

Главни разлог зашто се многи програмери удаљавају од регуларних израза је недостатак свести о моћи усклађивања образаца. Неки чак сматрају да су регуларни изрази збуњујући због велике количине знакова и низова који се користе у обрасцима.



Без обзира на разлог, регуларни изрази јесу и биће један од најважнијих аспеката програмирања за које би сви требали знати.

како прећи анонимно на ипхоне

Регуларни изрази: подударање знакова и низова

Регек је потпуно нови језик сам по себи. Регек механизам тумачи обрасце који се састоје од неколико знакова опремљених специфичним значењима. Основни литерали, попут алфанумеричких знакова, одговарају сами себи. Али сложени знакови као што су $, *, +, {итд. Помажу у усклађивању виших редова.





  1. Звездица (*): Поклапа се са претходним знаком нула или више пута. Дословно значење знака би било „Елемент помножен н пута“. На пример, ако је регуларни израз абц * , подударни низови ће бити аб, абц, абцц, абццц, абцццц итд [пре нове ере]* одговараће бц, бцбц, бцбц итд.
  2. Више (+): Поклапа се са претходним знаком једном или више пута. Рад на + лик је сличан * , али + лик изоставља образац ако се знак не појави. На пример, абц + ће одговарати абц, абцц, абццц, итд. али не и аб.
  3. Знак питања (?): Одговара претходном знаку нула или једном (с). На пример, образац абц? одговараће само аб и абц.
  4. Цев (|): Користи се као бинарни ИЛИ оператер. Подудара се са било којим знаком који претходи и следи. На пример, а | б одговараће а или б.
  5. Тачка (.): Одговара лику чији идентитет није познат. На пример, а.ц ће одговарати аац, абц, ацц, а2ц итд.
  6. Шаргарепа (^): Одговара првом знаку у обрасцу. На пример, ^Ра ће се подударати са речима које почињу са Оут као што су Зец, Ракун и Рандом.
  7. Долар ($): Одговара последњем знаку у обрасцу. На пример, ан $ ће се подударати са речима које се завршавају са ан као што су Ван, Дан и План.
  8. Цртица (-): Користи се за дефинисање опсега знакова. На пример, [0-9] одговараће свим једноцифреним нумеричким знаковима.

Посебне секвенце које се користе у обрасцима регуларног израза су:

  1. ДО: Враћа подударање ако су следећи знакови присутни на почетку низа. На пример, АТОна ће се подударати са речима које почињу са Тхе као што су Тхе, Тхем, Тхеи итд.
  2. б: Враћа подударање ако се знак налази на почетку или на крају речи. На пример, бмад и луд б одговараће речима као што су направљен и номад редом.
  3. Б: Враћа подударање ако знак није пронађен на почетку или на крају речи.
  4. д: Одговара нумеричким знаковима који су присутни у низу. На пример, /д* ће одговарати бројевима као што су 1, 12, 1232 итд.
  5. Д: Одговара не-бројчаним знаковима у низу. одговараће а, б, ц, ф итд.
  6. с: Подудара се са размаком у тексту.
  7. С: Подудара се са знаком који није размак у тексту.
  8. у: Враћа подударање ако стринг садржи алфанумеричке знакове укључујући доње црте. На пример, ин одговараће а, б, ц, д, 1, 2, 3 итд.
  9. ИН: Враћа подударање ако стринг не садржи алфанумеричке знакове или доње црте.
  10. ВИТХ: Подудара се са знаковима на крају низа. На пример, крај З ће се подударати са речима које се завршавају са крај као што су савијање, поправљање, тенденција итд.

Питхон методе за регуларне изразе

У Питхону, ре либрари пружа све потребне функције и помоћне програме потребне за имплементацију регуларног израза у ваше програме. Не морате да преузимате библиотеку помоћу пипа јер је унапред инсталирана са Питхон тумачем.





Да бисте увезли ре библиотеку у Питхону, додајте следећи код у своју скрипту:

import re

Имајте на уму да приликом преношења регуларних израза у Питхону користимо сирове низове јер они не тумаче посебне знакове као што су н и т другачије.

Утакмица()

Тхе ре.матцх () метода у Питхону враћа регек објекат ако програм пронађе подударање на почетку наведеног низа. Ова функција узима два основна аргумента:

re.match(pattern, string)

...где шаблон је регуларни израз и низ је текст који треба претражити.

Погледајте одломак кода испод.

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

Тхе р знак пре низа означава необрађени низ.

Излаз:

None

Горе наведени код се враћа Ниједан јер Реч није био присутан на почетку низа.

Ако се пронађе подударање, можете га одштампати помоћу група() метода која припада регек објекту.

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

Излаз:

Word

Тхе ре.сеарцх () метода узима сличне аргументе као ре.матцх (). Док матцх () враћа само подударања присутна на почетку низа, Претрага() ће вратити подударања пронађена у било ком индексу у низу.

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

Имајте на уму да је утакмица() и Претрага() методе ће вратити само једно подударање узорка. У горе поменутом коду, Реч се појављује два пута. Али Претрага() функција ће одговарати само првом појављивању речи.

Word

ФиндАлл ()

Као што већ можете погодити, финдалл () метход враћа свако могуће подударање у низу.

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

Уместо враћања регуларног израза, функција финдалл () враћа листу свих подударања. Можете да се крећете кроз листу помоћу а фор лооп у питхону .

Разделити()

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

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

Излаз:

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

Суб ()

Тхе суб () метода омогућава кориснику да замени одређену реч уместо шаблона. Потребни су следећи аргументи.

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.

Саставити()

Тхе ре.цомпиле () метод у ре библиотека омогућава кориснику да складишти компилирану верзију обрасца регуларног израза у меморију. Затим, помоћу компајлираног објекта, корисник може брзо филтрирати наведени испис текста за одговарајуће обрасце.

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

Ова функција се првенствено користи за чување образаца који захтевају много ресурса и потребно им је много времена за извођење. Састављање и чување узорка као објекта унапред решава овај проблем.

Искористите моћ регуларног израза помоћу Питхона

Када радите са текстуалним датотекама и излазом, регек је одличан алат који имате на располагању. Можете брзо написати неки код за филтрирање или замену одређених образаца у документу.

Запамћивање свих знакова и одговарајућих секвенци може бити тешко ако тек почињете са регуларним изразом. Да бисте боље напредовали у регуларним изразима, позивање на листу знакова, метода и низова с времена на време дефинитивно ће вам помоћи на дуже стазе.

Објави Објави Твеет Емаил Питхон РегЕк Цхеат Схеет за надобудне програмере

Користите ову листу регуларних израза Питхон како бисте могли боље да користите овај свестрани програмски језик.

Прочитајте следеће
Повезане теме
  • Програмирање
  • Програмирање
  • Питхон
О аутору Деепесх Схарма(Објављено 79 чланака)

Деепесх је млађи уредник за Линук у МУО. Он пише информативне водиче за Линук, с циљем да свим новопридошлим пружи блажено искуство. Нисам сигуран у филмове, али ако желите да разговарате о технологији, он је ваш момак. У слободно време можете га пронаћи како чита књиге, слуша различите музичке жанрове или свира гитару.

Више од Деепесх Схарма

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, критике, бесплатне е -књиге и ексклузивне понуде!

Кликните овде да бисте се претплатили