Co je regulární výraz?
Regex, nebo regulární výrazy, jsou značky odpovídající vzorům programátoři slouží k vyhledávání určitých vzorů v textu. Regulární výrazy mohou hledat téměř cokoli, podle toho, jak je strukturujete; používají je programátoři všude, protože jsou neocenitelní, protože pomáhají počítačům rychle třídit data a odfiltrovat nesmysly, které by jinak mohly způsobit chyby.
Regulární výrazy mají tendenci vypadat strašidelně, zejména pro neprogramátory. Stačí se podívat na toto:
[a-zA-Z0-9 _. + -] + @ [a-zA-Z0-9 _-] + \. [a-zA-Z0-9 _.-] +
Realisticky to vlastně není tak špatné; že jeden odpovídá e-mailovým adresám. Jak uvidíte, výrazy lze rozdělit na jednotlivé znaky, které programu říkají, co má hledat.
Regulární výrazy jsou téměř univerzální. Stejný generál syntax platí ve všech jazycích, pouze s mírnými odchylkami sem a tam. Tato příručka obsahuje příklady z Pythonu a JavaScriptu, stejně jako prostý starý regex. Pokud pracujete s jiným jazykem, nebojte se. Téměř vše bude platit i pro váš zvolený jazyk.
Základy regexu
Technicky vzato není mnoho věcí, které nelze považovat za regulární výrazy, protože doslovné řetězce textu jsou opravdu jednoduché. Pokud byste měli použít 'abcde' jako regulární výraz, programovací jazyk by hledal tento přesný řetězec.
První dynamičtější shodná postava, na kterou se podíváme, je znak „.“ charakter. V této souvislosti je znak tečky zástupným znakem. Pokud s ním hledáte, váš program vrátí jakýkoli znak, který najde jako shodu.
Co když chcete hledat doslovnou tečku? Ani to není těžké. Chcete-li použít doslovnou tečku, přidejte před ni zpětné lomítko, například: '\.'
Postavy zpětného lomítka
Zpětné lomítko zde však hraje mnohem více rolí. Většina hlavních znaků regulárního výrazu obsahuje zpětné lomítko.
Podívejte se na několik příkladů:
- \ d: číslice od 0 do 9
- \ w: Písmena, číslice a podtržítko "Znaky slova"
- \ s: Mezery, včetně tabulátorů, nových řádků a běžných mezer
Pokud místo toho u některého z nich použijete velké písmeno, dostanete naopak. Například '\ D' vám dává všechno kromě číslic.
Třídy
The znaky zpětného lomítka jsou dobří, ale stále jsou trochu strnulí. Obecně budete chtít spojit písmena, číslice nebo několik speciálních znaků.
Umístěte znaky, které chcete porovnat, do dvou hranatých závorek „[]“ a váš program se shoduje s jakoukoli z nich. Tomu se říká třída regexu.
[abcd1234]
Výše uvedený příklad je stále neúčinný. Místo toho můžete k určení rozsahu použít pomlčku; například všechna malá písmena:
[a-z]
Můžete také uvést rozsahy. Níže uvedený výraz odpovídá všem písmenům a číslicím:
[a-zA-Z0-9]
Pokud hodláte do sady znaků přidat pomlčku, připevněte ji na konci, abyste zabránili jejímu vyhodnocení. Funguje také s jinými speciálními znaky.
[a-zA-Z0-9 _. + -]
Stejně jako u znaků zpětného lomítka můžete i zde získat inverzní výsledek. Umístěte na začátek třídy znak „^“, abyste je vyloučili z výsledků. Tím se z výsledků vyloučí číslice a několik speciálních znaků:
[^0-9_+.-]
Skupiny
Skupiny používají k oddělení vašeho výrazu sadu závorek. Seskupují data a umožňují vašemu programu cílit a používat jej. Když program odstraní http://' z webové adresy k tomu využívá skupin regexu. Regulární výraz umožňuje cílit na určitá kritéria a skupiny umožňují oddělit jednotlivé sekce.
Skupiny vám také umožňují vybrat si mezi jedním nebo druhým vzorem. Zaměstnávají jediný znak „|“ jednat jako „nebo“ ve výrazu. Níže uvedený výraz bude odpovídat některému z těchto: .com, .org, .net, .edu nebo .gov.
\. (com | org | net | edu | gov)
Kvantifikátory
Kvantifikátory jsou přesně to, co zní. Řeknou výrazu množství postavy, kterou hledáte. Toto jsou dostupné kvantifikátory:
- *: Nula nebo více
- +: Jeden nebo více
- ?: Nula nebo jedna
- {3}: Částka v závorkách
Umístěte kterýkoli z těchto kvantifikátorů na konec znaku nebo třídy, u které chcete určit množství. Tento příklad hledá standardní sedmimístná telefonní čísla:
\ d {3} [. * -] \ d {3} [. * -] \ d {4}
Kotvy a hranice
Regulární výrazy vám umožňují hledat vzory na základě jejich polohy v řetězci textu nebo kolem slova.
Toto jsou vaše primární možnosti:
- ^: Začátek řetězce
- $: Konec řetězce
- \ b: Hranice slova (začátek nebo konec slova)
Pokud chcete najít pouze řetězce začínající písmenem, můžete zkusit:
^ [a-zA-Z]
Řekněme, že chcete najít pouze slovo „it“, nikoli slova obsahující písmena I a T; tam byste použili hranice slov.
\ b (i | I) t \ b
Závěrečné myšlenky
Regulární výrazy vám mohou při programování ušetřit spoustu bolestí hlavy. Představte si, že se snažíte napsat logiku, abyste dosáhli některého z příkladů v tomto článku. Byl by to strašný nepořádek. Jakmile se s nimi stanete pohodlnými, pravděpodobně zjistíte, že si opravdu užíváte sílu a flexibilitu regexu.