ホームページ  >  記事  >  バックエンド開発  >  PHP 正規表現: 文字列から複数の部分文字列を抽出する方法

PHP 正規表現: 文字列から複数の部分文字列を抽出する方法

WBOY
WBOYオリジナル
2023-06-23 08:38:581237ブラウズ

PHP では、正規表現は一般的に使用される文字列一致ツールです。正規表現を使用すると、文字列から必要な情報を簡単に抽出できます。この記事では、PHP 正規表現を使用して文字列から複数の部分文字列を抽出する方法を紹介します。

  1. preg_match_all 関数
    PHP には、文字列内の特定のパターンに一致するすべての部分文字列を検索するために使用できる preg_match_all 関数が用意されています。この関数の構文は次のとおりです。
preg_match_all($pattern, $string, &$matches, $flags = PREG_PATTERN_ORDER, $offset = 0);

このうち、$pattern は一致する必要がある正規表現を表し、$string は一致する必要がある文字列を表し、$matches は使用される配列です。一致した結果をすべて保存します。 $flags は一致フラグを表し、PREG_PATTERN_ORDER または PREG_SET_ORDER になります。 $offset はマッチングの開始位置を表し、デフォルトは 0 です。

次は、文字列のすべての数値を一致させる必要があると仮定した具体的な例です:

$str = 'abc123def456ghi789jkl';
preg_match_all('/d+/', $str, $matches);
print_r($matches[0]);

出力結果は次のとおりです:

Array
(
    [0] => 123
    [1] => 456
    [2] => 789
)

result 、 preg_match_all 関数によって返される $matches 配列では、最初の要素は正規表現全体と一致する結果を表し、次の要素は正規表現内の各括弧に対応する結果を表します。

  1. 括弧のグループ化
    正規表現では、括弧を使用して、一致する必要があるコンテンツをグループ化できます。たとえば、括弧を使用して一致する必要がある数字と文字を区切って、それぞれを一致させることができます:
$str = 'abc123def456ghi789jkl';
preg_match_all('/([a-z]+)(d+)/', $str, $matches);
print_r($matches);

出力結果は次のようになります:

Array
(
    [0] => Array
        (
            [0] => abc123
            [1] => def456
            [2] => ghi789
        )

    [1] => Array
        (
            [0] => abc
            [1] => def
            [2] => ghi
        )

    [2] => Array
        (
            [0] => 123
            [1] => 456
            [2] => 789
        )

)

$matches 配列の結果から見ると、 の最初の要素は正規表現全体の一致結果であり、後続の要素は正規表現内の各括弧の一致結果に対応します。このようにして、文字列から複数の部分文字列を簡単に抽出できます。

  1. 非貪欲モード
    デフォルトでは、正規表現は一致に貪欲モードを使用します。つまり、可能な限り多くの文字を一致させます。たとえば、文字列「aabbcc」の場合、「aa」と「bb」を一致させたい場合、正規表現「/a. b/」を使用できますが、一致結果は「aabb」ではなく「aabb」であることがわかります。期待通りの「aa」と「bb」。

この問題を解決するには、できるだけ少ない文字と一致する非貪欲モードを使用できます。正規表現では、欲張らないパターンを示すために疑問符を使用します。たとえば、上記の例で「aa」と「bb」を一致させるには、正規表現「/a. ?b/」を使用します。

$str = 'aabbcc';
preg_match_all('/a.+?b/', $str, $matches);
print_r($matches[0]);

出力結果は次のとおりです:

Array
(
    [0] => aa
    [1] => bb
)

結果から、非貪欲モードは必要な結果を正確に一致させるのに役立つことがわかります。

概要
この記事では、PHP 正規表現を使用して文字列から複数の部分文字列を抽出する方法について説明します。 preg_match_all 関数、ブラケットグループ化、non-greedy モードにより、さまざまな状況に柔軟に対応し、必要な情報を抽出できます。実際の開発では、正規表現を使用すると、文字列マッチングの効率と成功率が大幅に向上します。

以上がPHP 正規表現: 文字列から複数の部分文字列を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。