Hledat:

Set-top-boxy Parfémy Krása Produkty pro zdraví Hodinky Elektro Šperky Nábytek Nářadí a zahrada Outdoor Počítače Mobily
 

Regulární výraz

Regulární výraz (zkracováno na regexp, regex či jen RE podle anglického regular expression) je řetězec popisující celou množinu řetězců, konkrétně regulární jazyk. Představil je americký matematik Steven Kleene.[1]

Regulární výrazy mohou pro hledání podporovat i jiné programy, například propracovanější textové editory nebo souborové manažery. Nejčastěji jsou ale podporovány v počítačových programech a skriptovacích jazycích formou externí knihovny nebo sady funkcí.

Nejčastější využití je:

Pokud chce uživatel v textu vyhledat nějaký řetězec, který nezná přesně nebo který může mít více podob, může zadat regulární výraz, který postihne všechny požadované varianty. Program tak nalezne všechny části textu, které danému výrazu odpovídají.

Regulární výraz se skládá z literálů textu, které se mají shodovat, a speciálních znaků, které nejsou součástí hledaného textu, sloužících pro popis alternativ, množin, počtů výskytů a přepínačů.

Obsah

[editovat] Formální definice

Formálně je regulární výraz definován následujícím způsobem:

  1. a je regulární výraz pro libovolný literál (znak abecedy, popř. prázdný symbol ε) a, popisující právě text a.
  2. Pokud A a B jsou regulární výrazy, je AB regulární výraz, popisující zřetězení textů popsaných výrazy A a B.
  3. Pokud A a B jsou regulární výrazy, je A + B regulární výraz, popisující buď text popsaný výrazem A, nebo text, popsaný výrazem B.
  4. Pokud A je regulární výraz, pak A* je regulární výraz, popisující libovolný počet opakování (včetně žádného opakování) textů popsaných výrazem A.
  5. Pokud A je regulární výraz, je (A) regulární výraz popisující stejný jazyk. (Závorky slouží pouze pro vyjasnění priorit.)

Tato definice dostačuje pro popis libovolného regulárního jazyka.

[editovat] Prakticky používané syntaxe

V praxi se používají obvykle rozšířené definice regulárních jazyků, které umožňují běžné konstrukce zapsat jednodušším způsobem (ale schopnosti takto rozšířených výrazů se od základní definice neliší). V běžných syntaxích se zpravidla objevují následující konstrukce:

Mezi nejznámější používané syntaxe zápisu regulárních výrazů patří POSIX Regular Expressions a Perl Compatible Regular Expressions (PCRE), odvozená z definice jazyka Perl. Syntaxe PCRE (případně s malými odlišnostmi) se používá mimo jiné v PHP (funkce preg_ nebo (nyní již zastaralé) funkce ereg(i)_), Pythonu či JavaScriptu.

[editovat] Regulární výrazy popisující neregulární jazyky

V mnoha dnešních nástrojích obsahuje syntaxe „regulárních výrazů“ prostředky, kterými lze popsat jazyky silnější než regulární. Např. prostřednictvím tzv. zpětných odkazů v PCRE lze zapsat výraz (.*)\1, který označuje dvojí opakování libovolného textu (např. „masomaso“ či „123123“). Jazyk všech takových opakování však není regulární, není dokonce ani bezkontextový; běžné nástroje tak umožňují zapsat NP-těžké jazyky (a vyhledávat podle nich).

To vede k jistému zmatení pojmů, neboť „regulární výraz“ v běžném použití označuje obecnější pojem než „regulární výraz“ ve smyslu teorie formálních jazyků. Pro jednoznačnost se někdy tyto „rozšířené regulární výrazy“ označují jinak, např. výhradně výrazem „regex“.[2][3]

[editovat] Příklady

[editovat] Odkazy

[editovat] Reference

  1. http://phpfashion.com/regularni-korektura-intervalu-cz
  2. Ian Graham: Kleene Would Be Shocked – Redrawing the Link Between Theory and Modern Regex Engines – prezentace na Carnegie Mellon University, 2. 8. 2002 (PPT; anglicky)
  3. Larry Wall: Apocalypse 5: Pattern Matching, 18. 5. 2006

[editovat] Související články

[editovat] Externí odkazy

Wikibooks-logo.svg
Wikiknihy nabízejí dokument na téma:
Regulární výraz
 
Regulární výraz v jiných jazycích: العربية, Български, Català, Dansk, Deutsch, Ελληνικά, English, Esperanto, Español, Euskara, فارسی, Suomi, Français, Galego, עברית, हिन्दी, Hrvatski, Magyar, Íslenska, Italiano, 日本語, 한국어, Македонски, Nederlands, ‪Norsk (bokmål)‬, Polski, Português, Română, Русский, Slovenčina, Српски / Srpski, Svenska, தமிழ், ไทย, Türkçe, Українська, Tiếng Việt, 中文
Tento článek je převzat z české wikipedie - otevřené encyklopedie, originální článek naleznete na adrese: „http://cs.wikipedia.org/wiki/Regul%C3%A1rn%C3%AD_v%C3%BDraz
Stránka byla naposledy upravena 30. 8. 2010 v 01:22.
Text je dostupný pod licencí Creative Commons Uveďte autora – Zachovejte licenci 3.0 Unported, případně za dalších podmínek. Podrobnosti naleznete na stránce Podmínky užití.
Další služby: Portál | Katalog | Hledej | Zprávy | Počasí | Kurzy | Práce | Slovník | TV | Online hry | Java hry | SMS | Loga a melodie | Chat | Fórum | Kontakt | Set-top-boxy