Seriál Regulární výrazy v PHP (POSIX)
Regulární výrazy jsou tím nejmocnějším nástrojem pro práci s textem, znaky, řetězci. I s elementární znalostí jejich principů se vám otevře široké pole nových možností a budete schopni řešit úlohy jinými mechanismy neřešitelné.
Tato série článků je publikováná na e-zinu Interval.cz (odkazy se otevřou v novém okně). Autory článků jsou Michal Kebrt, Jiří Semecký, Miroslav Pecka.
Regulární výrazy slouží ke zpracování textových řetězců. Pomocí regulárních výrazů si určíme masku a poté zjišťujeme, zda daný textový řetězec této masce vyhovuje. To znamená, že textový řetězec musí obsahovat stejné znaky jako regulární výraz. Při vytváření regulárních výrazů se velice často uplatní tzv. metaznaky.
V minulém článku jsme se seznámili s regulárními výrazy a představili si některé metaznaky. Dnes se podíváme na další metaznaky a třídy znaků. Popíšeme si také jednotlivé funkce, které se používají v kombinaci s regulárními výrazy. V závěru je popsán regulární výraz, který kontroluje platnost e-mailové adresy.
O regulárních výrazech bylo napsáno velké množství rozsáhlých manuálů. K tomu, abyste se naučili používat regulární výrazy, ale nemusíte pročítat dlouhé odstavce textu, stačí si podrobně projít několik příkladů. Zaměříme se na regulární výrazy používané v PHP podle normy POSIX 1003.2.
Regulární výrazy jsou mocným nástrojem, který může výrazně zjednodušit a zpřehlednit kód programu. Důležitou součástí práce s regulárními výrazy jsou takzvané subvýrazy. Subvýrazy jsou části regulárního výrazu, které umožňují zjednodušení zápisu běžného regulárního výrazu i tvorbu komplikovanějších výrazů, schopných inteligentně postihnout a manipulovat například i s řetězci, jejichž přesnou podobu nelze předem určit.
Občas jsme postaveni před úkol vyhledat v určitém textu konkrétní data určitého typu. Může se jednat například o vyhledání (respektive vypsání) všech odkazů či obrázků obsažených ve zdrojovém kódu webové stránky nebo třeba vyhledání všech e-mailů v XHTML kódu či tisíckrát přeposlaném e-mailu.