Jdi na navigaci předmětu

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

Soulad s RE (matching)

  • preg_match()

    $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í

  • preg_replace()

    $string = 'April 15, 2003';
    $pattern = '/(\w+) (\d+), (\d+)/i';
    $replacement = '$2th $1 / $3';
    echo preg_replace($pattern, $replacement, $string);

Rozdělení podle RE

  • preg_split()

    $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);   // [ , ě, š, č, ř, ]