Modifikátory
Pro změnu chování operátorů pracujících s regulárními výrazy (m/ /, s / / / a qr / / ) lze použít tzv. modifikátory. Jedná se o znaky, které se umístí za koncový ohraničovací symbol operátoru. Modifikátorů může být zároveň použito více a nezáleží na tom, v jakém pořadí jsou uvedeny. V následující tabulce jsou uvedeny modifikátory regulárních výrazů spolu s jejich popisem významu.Modifikátor | Význam |
---|---|
i | Nerozlišuje mezi malými a velkými písmeny |
m | S řetězcem se zachází jako s více řádky |
o | Vzor překládá pouze jednou |
s | S řetězcem se zachází pouze jednou, „ .“ odpovídá i znaku konce řádku |
x | Ignorují se bílé znaky |
Modifikátor „i“ způsobí to, že se při prohledávání řetězce nerozlišuje mezi malými a velkými písmeny.
Modifikátor „m“ se dotýká chápání kotev začátků i konců řetězce a řádků. Použijeme-li ho, znamená kotva ^ pozici následujícího znaku konce řádku a pozici na začátku řetězce, $ znamená pozici před znakem konce řádku a pozici na konci řetězce. Není-li tento modifikátor použit, znamenají tyto kotvy pouze začátek a konec řetězce.
Modifikátor „s“ umožní to, že metaznak . odpovídá i znaku konce řádku. Umožní také ignorovat proměnnou $*. Je-li tato proměnná nastavena na pravdivou hodnotu, bude každý vzor vyhodnocen tak, jako by byl v platnosti modifikátor „m“.
Modifikátory „m“ a „s“ je možné použít i současně, navzájem se nevylučují. Každý z nich totiž pouze mění chápání určitých symbolů v regulárním výrazu a tyto symboly jsou pro každý modifikátor jiné.
Použití modifikátoru „o“ je vhodné v případě, že chceme zabránit, aby byl vzor vyhodnocován za běhu programu více než jedenkrát. To se děje v případě, že vzor obsahuje nějaké proměnné, jejichž hodnoty se vkládají do vzoru až v době běhu programu. Aby se této časově náročné operaci zabránilo, použije se modifikátor „o“. Je to užitečné v případě, že víme, že se hodnota proměnné v průběhu programu nebude měnit.
Modifikátor „x“ umožňuje přehledné psaní složitých regulárních výrazů s možností vysvětlení jednotlivých částí. Všechny bílé znaky a komentáře (od znaku # do konce řádku) jsou ignorovány. Chceme-li ve vzoru použít některý z těchto znaků, musíme je uvodit obráceným lomítkem, uvést uvnitř třídy znaků nebo pomocí jeho ordinálního čísla.
A to by bylo pro dnešek všechno. V dalším díle se podíváme na formáty. V případě jakýchkoliv dotazů mě kontaktujte na email: habrman@banan.cz.
Autor: Robert Habrman