V PHP jsou kromě POSIXových regulárních výrazů (které jsou slabé a pomalé), také Perlové. Regulární výraz se v Perlových regulárních výrazech uvozuje jedním znakem (obvykle /), následuje maska a nakonec znovu první znak a případné modifikátory. Přijde mi to jako ukázková „Perlovina“, mnohem čistší by bylo předávat jenom masku a případné modifikátory jako další parametry funkce, ale s tím už nic nenadělám. Otázka je, jaký znak pro oddělovač používat. Lomítko je krajně nepraktické např. při parsování HTML, takže já osobně používám vlnku ~ – skoro nikde se nepoužívá a je dostatečně výrazná, takže je na první pohled poznat, kde končí maska a začínají modifikátory, narozdíl např. od !, který někdo také používá.
<?php preg_match('~<a href="([^"]+)">(.*)</a>~U', $body); ?>
Od PHP 4.0.4 jdou používat i oddělovače v podobě závorek (), {}, [] nebo <>. Jejich výhoda spočívá v tom, že je uvnitř výrazu můžeme použít bez jakéhokoliv ošetřování, nevýhoda zase v tom, že jako oddělovač nejsou moc výrazné.