【PHP】これで分かる関数! – 正規表現・アンカー –

PHP

更新履歴

更新日更新者更新内容
2021/8/21JJI・”はじめに”の段落を追加
・サンプルプログラムの実行結果に画面の画像を追加

はじめに

サンプルプログラムの中で次の記事で載せている関数を使用している場合があります。

アンカー

アンカーには次の種類があります。

文字説明
^文字列の先頭、よく使用する
$文字列の末尾、よく使用する
[[:<:]]単語の先頭
[[:>:]]単語の末尾
\bワードの境界(\wから\Wまでの間、あるいは文字列の先頭や末尾)
\Bワードの境界以外(\Wから\wまでの間、あるいは\Wや\w)
\A文字列の先頭
\Z文字列の末尾、あるいは最後の\nの直前
\z文字列の末尾
^行頭(/mフラグが有効な場合、\nの直後)
$行末(/mフラグが有効な場合、\nの直前)

サンプルプログラム1

^を使用したサンプルプログラムです。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】正規表現:エスケープシーケンス<br>\n";

    // ^の正規表現
    $str1 = "Mike likes dog very very much.\n";
    $match = "/^Mike/";
    echo "検索対象文字列:" . $str1. ":<br>\n";
    echo "正規表現:" . $match . ":<br>\n";
    echo "正規表現の検索結果:" . preg_match($match, $str1, $hits) . ":<br>\n";
    echo "マッチした文字列<br>\n"; 
    echo_array1($hits);

    // ^の正規表現
    $str1 = "Mike likes dog very very much.\n";
    $match = "/^Mary/";
    echo "検索対象文字列:" . $str1 . ":<br>\n";
    echo "正規表現:" . $match . ":<br>\n";
    echo "正規表現の検索結果:" . preg_match($match, $str1, $hits) . ":<br>\n";
    echo "マッチした文字列<br>\n";
    if(empty($hits)) {
        echo "マッチした文字列はありません" . "<br>\n";
    } else {
        echo_array1($hits);
    }
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_06_09.php<br>
【PHP】正規表現:エスケープシーケンス<br>
検索対象文字列:Mike likes dog very very much.
:<br>
正規表現:/^Mike/:<br>
正規表現の検索結果:1:<br>
マッチした文字列<br>
[0]:Mike:<br><br>
検索対象文字列:Mike likes dog very very much.
:<br>
正規表現:/^Mary/:<br>
正規表現の検索結果:0:<br>
マッチした文字列<br>
マッチした文字列はありません<br>

サンプルプログラム2

$、\wを使用したサンプルプログラムです。

<?php
    // 引数の値への厳密な型付け
    declare(strict_types = 1);
    // 共通ライブラリの読み込み
    require_once __DIR__ . "../../../lib/sample_common.php";

    echo "ファイル名:" . basename(__FILE__) . "<br>\n";
    echo "【PHP】正規表現:エスケープシーケンス<br>\n";

    // $の正規表現
    $str1 = "Mike likes dog very very much.\n";
    $match = "/much\.$/";
    echo "検索対象文字列:" . $str1. ":<br>\n";
    echo "正規表現:" . $match . ":<br>\n";
    echo "正規表現の検索結果:" . preg_match($match, $str1, $hits) . ":<br>\n";
    echo "マッチした文字列<br>\n"; 
    echo_array1($hits);

    // \bの正規表現
    $str1 = "Mike likes dog very very much.\n";
    $match = "/likes\b/";
    echo "検索対象文字列:" . $str1 . ":<br>\n";
    echo "正規表現:" . $match . ":<br>\n";
    echo "正規表現の検索結果:" . preg_match($match, $str1, $hits) . ":<br>\n";
    echo "マッチした文字列<br>\n"; 
    echo_array1($hits);
?>

実行結果です。

・画面

・HTML

ファイル名:sample02_06_10.php<br>
【PHP】正規表現:エスケープシーケンス<br>
検索対象文字列:Mike likes dog very very much.
:<br>
正規表現:/much\.$/:<br>
正規表現の検索結果:1:<br>
マッチした文字列<br>
[0]:much.:<br><br>
検索対象文字列:Mike likes dog very very much.
:<br>
正規表現:/likes\b/:<br>
正規表現の検索結果:1:<br>
マッチした文字列<br>
[0]:likes:<br><br>

コメント