Průvodce pro regulární výrazy pro začátečníky s Pythonem

Průvodce pro regulární výrazy pro začátečníky s Pythonem

Pokud jste programátor, je pravděpodobné, že již víte, co jsou regulární výrazy (regex). Regexové vzory byly implementovány téměř v každém běžném programovacím jazyce, ale přesto síla a univerzálnost těchto vzorů většina vývojářů neuznává.





Tato příručka je o regulárních výrazech a o tom, jak je můžete použít v programovacím jazyce Python.





Co jsou regulární výrazy?

Regulární výrazy jsou vzory, které uživateli pomáhají porovnávat kombinace znaků v textových souborech a řetězcích. Pomocí regulárních výrazů můžete filtrovat nebo najít konkrétní vzor na výstupu příkazu nebo dokumentu.





Existují různé případy použití regulárních výrazů, z nichž nejznámější je bytost příkaz grep v Linuxu . Mezi další aplikace patří filtrování informací, jako je extrahování e -mailových adres a telefonních čísel ze skládky dat.

Hlavním důvodem, proč se mnoho vývojářů odklání od regulárních výrazů, je nedostatečné povědomí o síle shody vzorů. Někteří dokonce považují regulární výrazy za matoucí kvůli velkému množství postav a sekvencí použitých ve vzorech.



Ať už je důvod jakýkoli, regulární výrazy jsou a budou jedním z nejdůležitějších aspektů programování, o kterém by měl každý vědět.

jak zkontrolovat virus na iphone

Regulární výrazy: odpovídající znaky a sekvence

Regex je sám o sobě zcela nový jazyk. Motor regexu interpretuje vzory složené z několika znaků vybavených konkrétními významy. Základní literály, jako jsou alfanumerické znaky, se samy shodují. Složité znaky, jako je $, *, +, {atd., Však pomáhají při shodu vyššího řádu.





  1. Hvězdička (*): Odpovídá předchozímu znaku nula nebo vícekrát. Doslovný význam znaku by byl „prvek vynásobený nkrát“. Pokud je například regulární výraz abc * , odpovídající řetězce budou ab, abc, abcc, abccc, abcccc atd. Výraz [před naším letopočtem]* bude odpovídat bc, bcbc, bcbc atd.
  2. Více (+): Odpovídá předchozímu znaku jednou nebo vícekrát. Fungování + charakter je podobný * , ale + pokud znak nenastane, znak vynechá vzor. Například, abc + bude odpovídat abc, abcc, abccc atd., ale ne ab.
  3. Otazník (?): Odpovídá předchozímu znaku nula nebo jedenkrát. Například vzor abc? bude odpovídat pouze ab a abc.
  4. Potrubí (|): Používá se jako binární NEBO operátor. Odpovídá některému ze znaků předcházejících a následujících po kanálu. Například, a | b bude odpovídat buď a nebo b.
  5. Tečka (.): Odpovídá postavě, jejíž identita není známa. Například, a.c bude odpovídat aac, abc, acc, a2c atd.
  6. Mrkev (^): Odpovídá prvnímu znaku ve vzoru. Například, ^Ra bude odpovídat slovům začínajícím na Ven například Rabbit, Raccoon a Random.
  7. Dolar ($): Odpovídá poslednímu znaku ve vzoru. Například, $ bude odpovídat slovům končícím na an jako Van, Dan a Plan.
  8. Pomlčka (-): Slouží k definování rozsahu znaků. Například, [0-9] bude odpovídat všem jednomístným číselným znakům.

Speciální sekvence používané ve vzorcích regulárních výrazů jsou:

  1. NA: Vrátí shodu, pokud jsou následující znaky přítomny na začátku řetězce. Například, A bude odpovídat slovům začínajícím na The jako jsou ti, oni, oni atd.
  2. b: Vrátí shodu, pokud je znak nalezen na začátku nebo na konci slova. Například, bmad a šílený b bude odpovídat slovům jako vyrobeno a nomád resp.
  3. B: Vrátí shodu, pokud znak není nalezen na začátku nebo na konci slova.
  4. d: Odpovídá číselným znakům přítomným v řetězci. Například, /d* bude odpovídat číslům jako 1, 12, 1232 atd.
  5. D: Odpovídá nečíselným znakům v řetězci. /D bude odpovídat a, b, c, f atd.
  6. s: Odpovídá prázdnému znaku v textu.
  7. S: Odpovídá znaku, který není v textu prázdný.
  8. v: Vrátí shodu, pokud řetězec obsahuje alfanumerické znaky včetně podtržítek. Například, v bude odpovídat a, b, c, d, 1, 2, 3 atd.
  9. V: Vrátí shodu, pokud řetězec neobsahuje alfanumerické znaky nebo podtržítka.
  10. S: Odpovídá znakům na konci řetězce. Například, konec Z bude odpovídat slovům končícím na konec jako ohýbat, opravovat, tendovat atd.

Metody Pythonu pro regulární výrazy

V Pythonu je re library poskytuje všechny potřebné funkce a nástroje potřebné k implementaci regexu do vašich programů. Knihovnu nemusíte stahovat pomocí pipu, protože je dodávána s předinstalovaným interpretem Pythonu.





Chcete -li importovat soubor re knihovna v Pythonu, přidejte do skriptu následující kód:

import re

Všimněte si toho, že při předávání regulárních výrazů v Pythonu používáme nezpracované řetězce, protože neinterpretují speciální znaky jako např n a t jinak.

Zápas()

The odveta() metoda v Pythonu vrací objekt regexu, pokud program najde shodu na začátku zadaného řetězce. Tato funkce přebírá dva základní argumenty:

re.match(pattern, string)

...kde vzor je regulární výraz a tětiva je text, který je třeba vyhledat.

Podívejte se na úryvek kódu níže.

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

The r znak před řetězcem znamená nezpracovaný řetězec.

Výstup:

None

Výše uvedený kód se vrací Žádný protože Slovo nebyl přítomen na začátku řetězce.

Pokud je nalezena shoda, můžete ji vytisknout pomocí skupina() metoda, která patří k objektu regexu.

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

Výstup:

Word

The re.search () metoda přebírá podobné argumenty jako re.match (). Zatímco match () vrací pouze shody přítomné na začátku řetězce, Vyhledávání() vrátí shody nalezené v libovolném indexu v řetězci.

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

Všimněte si, že zápas() a Vyhledávání() metody vrátí pouze jednu shodu vzoru. Ve výše uvedeném kódu Slovo objeví dvakrát. Ale Vyhledávání() funkce bude odpovídat pouze prvnímu výskytu slova.

Word

FindAll ()

Jak už asi tušíte, findall () metoda vrací všechny možné shody v řetězci.

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

Namísto vrácení objektu regexu vrací funkce findall () seznam všech shod. Seznam můžete iterovat pomocí pro smyčku v pythonu .

Rozdělit()

Pokud chcete rozdělit řetězec na dílčí řetězce pomocí vzoru jako oddělovače, pak rozdělit() funkce je ta, kterou potřebujete.

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

Výstup:

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

Sub()

The sub() metoda umožňuje uživateli nahradit konkrétní slovo místo vzoru. Chce to následující argumenty.

re.sub(pattern, replacement, string)

Zvažte tento úryvek kódu:

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

Výstup:

Dave or Harry must be punished.

Kompilovat()

The re.compile () metoda v re knihovna umožňuje uživateli uložit zkompilovanou verzi vzoru regulárního výrazu do paměti. Potom pomocí kompilovaného objektu může uživatel rychle filtrovat zadaný výpis textu pro odpovídající vzory.

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

Tato funkce se používá především pro ukládání vzorů, které jsou náročné na zdroje a ke spuštění potřebují hodně času. Předběžná kompilace a uložení vzoru jako objektu tento problém řeší.

Využijte sílu regexu s Pythonem

Když pracujete s textovými soubory a výstupem, regex je skvělý nástroj, který máte k dispozici. Můžete rychle napsat nějaký kód k filtrování nebo nahrazení konkrétních vzorů v dokumentu.

Zapamatování všech postav a odpovídajících sekvencí může být obtížné, pokud s regexem teprve začínáte. Chcete -li se zlepšit v regulárních výrazech, odkazování na seznam znaků, metod a sekvencí vám každou chvíli určitě pomůže z dlouhodobého hlediska.

Podíl Podíl tweet E-mailem Cheat Sheet Python RegEx pro začínající programátory

Použijte tento seznam regulárních výrazů Pythonu, abyste se mohli lépe používat v tomto univerzálním programovacím jazyce.

Číst dále
Související témata
  • Programování
  • Programování
  • Krajta
O autorovi Deepesh Sharma(79 článků zveřejněno)

Deepesh je juniorský editor pro Linux na MUO. Píše informační příručky pro Linux s cílem poskytnout všem nováčkům blažený zážitek. Nejste si jisti filmy, ale pokud chcete mluvit o technologii, je to váš chlap. Ve svém volném čase ho můžete najít číst knihy, poslouchat různé hudební žánry nebo hrát na kytaru.

Více od Deepesh Sharma

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru