Regulární výrazy
"Regex"
- Perl-compatible regular expressions → preg
- Regex101 – webová stránka pro testování funkčnosti regulárních výrazů
Syntaxe
- Regular Expressions (Perl-Compatible)
- vzor (pattern) mezi oddělovači, obykle
/
nebo#
preg_quote
předzpracování řetězců pro použití v regulárních výrazech- meta-znaky -
^
,$
,.
,[
,]
, … - escape sekvence -
\d
,\s
,\w
,\b
… - modifikátory - uvádí se za oddělovač
m
(multiline),i
(case insensitive),u
(UTF-8 support)
Soulad s RE (matching)
$subject = "abcdef"; $pattern = '/def/'; preg_match($pattern, $subject, $matches); print_r($matches); // [ "def" ] // preg_match() podporuje i matchovaní skupin a pojmenovaných skupin $str = "Matching (named) groups"; preg_match('/\((?P<named_match>na[^s]+d).*(g.*)/', $str, $matches); var_dump($matches); // array(4) { // [0] => // string(14) "(named) groups" // 'named_match' => // string(5) "named" // [1] => // string(5) "named" // [2] => // string(6) "groups" // }
Escape sekvence
komplikují použití
\
v regulárních výrazech$a="abc\\def\\ghi"; // abc\def\ghi preg_match("/\\\\.*\\\\/", $a, $m); var_dump($m); // [ \def\ ]
Nahrazování
$string = 'April 15, 2003'; $pattern = '/(\w+) (\d+), (\d+)/i'; $replacement = '$2th $1 / $3'; echo preg_replace($pattern, $replacement, $string);
Rozdělení podle RE
$string = "1+2-3"; $array = preg_split('/[+-]/', $string); print_r($array); // [1, 2, 3]
trik - převod na pole s podporou UTF-8
$string = "ěščř"; $array = preg_split('//u', $string); print_r($array); // [ , ě, š, č, ř, ]