Ak ste programátor, je pravdepodobné, že už viete, čo sú regulárne výrazy (regulárne výrazy). Regexové vzory boli implementované takmer vo všetkých bežných programovacích jazykoch, ale vývojári stále nepoznajú silu a všestrannosť týchto vzorov.

Táto príručka je o regulárnych výrazoch a o tom, ako ich môžete používať v programovacom jazyku Python.

Čo sú regulárne výrazy?

Regulárne výrazy sú vzory, ktoré pomáhajú používateľovi porovnávať kombinácie znakov v textových súboroch a reťazcoch. Regulárne výrazy môžete použiť na filtrovanie alebo vyhľadanie konkrétneho vzoru vo výstupe príkazu alebo dokumentu.

Existujú rôzne prípady použitia regulárnych výrazov, z ktorých je najviac známa príkaz grep v systéme Linux. Medzi ďalšie aplikácie patrí filtrovanie informácií, napríklad extrakcia e-mailových adries a telefónnych čísel z výpisu údajov.

Hlavným dôvodom, prečo sa mnoho vývojárov odkláňa od regulárnych výrazov, je nedostatok vedomia o sile porovnávania vzorov. Niektorým dokonca pripadajú regulárne výrazy mätúce z dôvodu veľkého množstva znakov a sekvencií použitých vo vzorkách.

instagram viewer

Nech už je dôvod akýkoľvek, regulárne výrazy sú a budú jedným z najdôležitejších aspektov programovania, o ktorých by mal každý vedieť.

Regulárne výrazy: Zhoda znakov a sekvencií

Regex je sám o sebe úplne novým jazykom. Regexový modul interpretuje vzory zložené z niekoľkých znakov vybavených konkrétnymi významami. Základné literály, ako sú alfanumerické znaky, sa k sebe zhodujú. Ale zložité znaky ako $, *, +, {atď. pomoc pri párovaní vyššieho rádu.

  1. Hviezdička (*): Zodpovedá predchádzajúcemu znaku nula alebo viackrát. Doslovný význam znaku by bol „Element vynásobený n-krát“. Napríklad ak je regulárny výraz abc *, zodpovedajúce reťazce budú ab, abc, abcc, abccc, abcccc atď. Výraz [bc] * bude zodpovedať bc, bcbc, bcbc atď.
  2. Plus (+): Zhoduje sa s predchádzajúcim znakom jeden alebo viackrát. Činnosť + znak je podobný *, ale + znak vynechá vzor, ​​ak sa znak nevyskytuje. Napríklad, abc + bude zodpovedať abc, abcc, abccc atď. ale nie ab.
  3. Otáznik (?): Zhoduje sa s predchádzajúcim znakom nula alebo jedenkrát. Napríklad vzor abc? bude zodpovedať iba ab a abc.
  4. Potrubie (|): Používa sa ako binárny súbor ALEBO operátor. Zhoduje sa s ktorýmkoľvek zo znakov predchádzajúcich a nasledujúcich za rúrou. Napríklad, a | b bude zodpovedať buď a alebo b.
  5. Bodka (.): Zhoduje sa so znakom, ktorého totožnosť nie je známa. Napríklad, a.c bude zodpovedať aac, abc, acc, a2c atď.
  6. Mrkva (^): Zhoduje sa s prvým znakom vo vzore. Napríklad, ^ Ra bude zodpovedať slovám začínajúcim na Ra napríklad Rabbit, Raccoon a Random.
  7. Dolár ($): Zhoduje sa s posledným znakom vo vzore. Napríklad, $ bude zodpovedať slovám končiacim na an ako Van, Dan a Plan.
  8. Pomlčka (-): Používa sa na definovanie rozsahu znakov. Napríklad, [0-9] bude zodpovedať všetkým jednomiestnym číselným znakom.

Špeciálne sekvencie používané vo vzorkách regulárneho výrazu sú:

  1. \ A: Vráti zhodu, ak sú nasledujúce znaky prítomné na začiatku reťazca. Napríklad, \ AT bude zodpovedať slovám začínajúcim sa na The ako napríklad The, Them, They atď.
  2. \ b: Vráti zhodu, ak sa znak nachádza na začiatku alebo na konci slova. Napríklad, \ bmad a blázon \ b bude zodpovedať slovám ako napr vyrobené a nomád resp.
  3. \ B: Vráti zhodu, ak znak nenájdete na začiatku alebo na konci slova.
  4. \ d: Zhoduje sa s číselnými znakmi v reťazci. Napríklad, /d* bude zodpovedať číslam ako 1, 12, 1232 atď.
  5. \ D: Zhoda nečíselných znakov v reťazci. / D bude zodpovedať a, b, c, f atď.
  6. \ s: Zhoduje sa s prázdnym znakom v texte.
  7. \ S: Zhoduje sa s iným znakom ako bez medzery v texte.
  8. \ w: Vráti zhodu, ak reťazec obsahuje alfanumerické znaky vrátane podčiarknutí. Napríklad, \ w bude zodpovedať a, b, c, d, 1, 2, 3 atď.
  9. \ W: Vráti zhodu, ak reťazec neobsahuje alfanumerické znaky alebo podčiarkovníky.
  10. \ Z: Zhoda znakov na konci reťazca. Napríklad, koniec \ Z bude zodpovedať slovám končiacim na koniec ako ohýbať, opravovať, udržiavať, atď.

Metódy Pythonu pre regulárne výrazy

V Pythone je re Knižnica poskytuje všetky potrebné funkcie a nástroje potrebné na implementáciu regulárneho výrazu vo vašich programoch. Knižnicu nemusíte sťahovať pomocou pipu, pretože je predinštalovaný s interpretom Pythonu.

Ak chcete importovať re knižnice v Pythone, pridajte do svojho skriptu nasledujúci kód:

import re

Všimnite si, že pri odovzdávaní regulárnych výrazov v Pythone používame surové reťazce, pretože neinterpretujú špeciálne znaky ako napr \ n a \ t inak.

Zápas()

The re.match () metóda v Pythone vráti objekt regulárneho výrazu, ak program nájde zhodu na začiatku zadaného reťazca. Táto funkcia má dva základné argumenty:

re.match (vzor, ​​reťazec)

...kde vzor je regulárny výraz a reťazec je text, ktorý je potrebné vyhľadať.

Pozrite sa na útržok kódu nižšie.

import re
match = re.match (r'Word ', "Táto veta obsahuje slovo")
tlač (zhoda)

The r znak pred reťazcom znamená surový reťazec.

Výkon:

Žiadne

Vyššie uvedený kód sa vráti Žiadne pretože Slovo nebol prítomný na začiatku reťazca.

Ak sa nájde zhoda, môžete ju vytlačiť pomocou skupina () metóda, ktorá patrí k objektu regulárneho výrazu.

import re
match = re.match (r'Word ', "Word sa ťažko číta")
print (match.group (0))

Výkon:

Slovo

Vyhľadávanie()

The opätovné hľadanie () metóda berie podobné argumenty ako re.match (). Zatiaľ čo match () vracia iba zhody prítomné na začiatku reťazca, Vyhľadávanie() vráti zhody nájdené pri akomkoľvek indexe v reťazci.

import re
match = re.search (r'Word ', "Táto veta obsahuje slovo. Slovo sa ťažko číta. “)
print (match.group (0))

Všimnite si, že zápas() a Vyhľadávanie() metódy vrátia iba jednu zhodu vzoru. Vo vyššie uvedenom kóde Slovo sa objaví dvakrát. Ale Vyhľadávanie() funkcia sa bude zhodovať iba s prvým výskytom slova.

Slovo

FindAll ()

Ako už tušíte, findall () metóda vráti každú možnú zhodu v reťazci.

import re
match = re.search (r'Word ', "Táto veta obsahuje slovo. Slovo sa ťažko číta. “)
pre elem v zápase:
tlač (elem)

Namiesto vrátenia objektu regulárneho výrazu funkcia findall () vráti zoznam všetkých zhôd. V zozname môžete iterovať pomocou a pre slučku v pythone.

Split ()

Ak chcete rozdeliť reťazec na podreťazce pomocou vzoru ako oddeľovača, stlačte kláves split () funkcia je tá, ktorú potrebujete.

import re
split = re.split (r'and ', "Toto slovo a to a toto je odlišné.")
tlačiť (rozdeliť)

Výkon:

['Toto slovo "," to "," toto je iné. "]

Sub ()

The sub () metóda umožňuje používateľovi nahradiť konkrétne slovo namiesto vzoru. Vyžaduje nasledujúce argumenty.

re.sub (vzor, ​​náhrada, reťazec)

Zvážte tento útržok kódu:

import re
result = re.sub (r'and ',' or ', "Dave a Harry musia byť potrestaní.")
tlač (výsledok)

Výkon:

Dave alebo Harry musia byť potrestaní.

Zostaviť ()

The re.compile () metóda v re Knižnica umožňuje používateľovi uložiť do pamäte skompilovanú verziu vzoru regulárneho výrazu. Potom môže používateľ pomocou skompilovaného objektu rýchlo filtrovať zadaný textový výpis pre zodpovedajúce vzory.

import re
pattern = re.compile ('Python')
match = pattern.findall („Python je vynikajúci jazyk na písanie skriptov. Python sa dá ľahko naučiť. “)
tlač (zhoda)

Táto funkcia sa primárne používa na ukladanie vzorov, ktoré sú náročné na zdroje a ktorých spustenie vyžaduje veľa času. Tento problém vyrieši kompilácia a uloženie vzoru ako objektu vopred.

Využite silu regulárneho výrazu s Pythonom

Pri práci s textovými súbormi a výstupmi je regex skvelým nástrojom, ktorý máte k dispozícii. Môžete rýchlo napísať nejaký kód na filtrovanie alebo nahradenie konkrétnych vzorov v dokumente.

Zapamätať si všetky postavy a zodpovedajúce sekvencie môže byť ťažké, ak práve začínate s regulárnym výrazom. Ak sa chcete zlepšiť v regulárnych výrazoch, dlhodobý odkaz na zoznam znakov, metód a postupností vám určite pomôže.

Email
Cheat Sheet pre Python RegEx pre začínajúcich programátorov

Použite tento zoznam regulárnych výrazov Pythonu, aby ste sa mohli lepšie pohybovať v tomto univerzálnom programovacom jazyku.

Prečítajte si Ďalej

Súvisiace témy
  • Programovanie
  • Programovanie
  • Python
O autorovi
Deepesh Sharma (Publikovaných 41 článkov)

Deepesh je juniorský editor pre Linux na MUO. Píše informačný obsah na internete už viac ako 3 roky. Vo voľnom čase rád píše, počúva hudbu a hrá na gitare.

Viac od Deepesh Sharma

Prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu s technickými tipmi, recenziami, bezplatnými elektronickými knihami a exkluzívnymi ponukami!

Ešte jeden krok…!

V e-maile, ktorý sme vám práve poslali, potvrďte svoju e-mailovú adresu.

.