PHP 正規表現の練習: 改行文字のマッチング
正規表現は非常に強力なテキスト パターン マッチング ツールであり、いくつかの特殊文字と演算子を使用してテキストをマッチングするためのルールを記述することができます。 PHP では正規表現が非常に使いやすく、豊富な正規表現演算機能を提供する PCRE (Perl 互換正規表現) ライブラリが組み込まれています。
しかし、実際のアプリケーションでは、改行を含むテキストの一致など、いくつかの特殊なケースが発生することがあります。この場合、必要なものと正しく一致させるために改行を特別に処理する必要があります。この記事では、PHP で正規表現を使用して改行を含むテキストと一致する方法を説明します。
1. 正規表現における改行文字
正規表現では、改行文字は通常
で表されます。たとえば、テキスト行内の hello を含む文字列と一致させるには、次の正規表現を使用できます。
/.*hello.*/i
このうち、.* は任意の文字に何度でも一致することを意味し、i は大文字と小文字を区別しないことを意味します。 。
ただし、一致するテキストに改行が含まれている場合、この単純な正規表現は正しく機能しません。たとえば、次のテキスト内の hello 文字列と一致する場合:
this is a hello world
上記の正規表現を使用すると、テキストの 1 行のみと一致し、複数行にわたって一致することはできないため、失敗します。
2. s 修飾子を使用して改行文字を一致させる
PHP で改行文字を含むテキストを正しく一致させるには、s 修飾子を使用できます。 s 修飾子を使用すると、ピリオド (.) を改行を含む任意の文字と一致させることができます。たとえば、次の正規表現は、上記の例の hello 文字列と一致します。
/.*hello.*/is
その中で、正規表現の後に s 修飾子が追加され、ピリオドが改行を含む任意の文字と一致するようになります。こうすることで、文字列が複数行にまたがる場合でも、ピリオドはテキスト内のすべての文字と一致します。
s 修飾子は正規表現全体の一致ルールに影響を与えるため、注意して使用する必要があることに注意してください。
3. [sS] を使用して改行文字と一致させる
s 修飾子を使用することに加えて、[sS] を使用して改行文字を含む任意の文字と一致させることもできます。このうち、sは空白文字(スペース、タブ、改行など)を表し、Sは空白文字以外の文字を表します。したがって、[sS] は改行を含むすべての文字に一致することを意味します。たとえば、次の正規表現も、上記の例の hello 文字列と一致します。
/.*hello[sS]*/i
[sS] を使用して改行と一致する利点は、正規表現の後に修飾子を追加する必要がないことです。必要に応じて改行を挿入すると便利です。
4. 正規表現の定義済み文字クラスの使用
s 修飾子と [sS] の使用に加えて、正規表現の定義済み文字クラスを使用して改行を照合することもできます。このうち R は、
、、
などを含む任意の改行文字と一致することを意味します。たとえば、次の正規表現は、上記の例の hello 文字列にも一致します。
/.*hello.*R/i
このうち、R は任意の改行文字と一致することを意味するため、文字列が複数行にまたがる場合でも、正規表現は一致します。正しく一致します。
R は PHP 5.2.4 で導入されたものであるため、PHP バージョンがそれより低い場合は使用できないことに注意してください。
5. 結論
正規表現を使用して改行を含むテキストと一致させることは、PHP 開発でよく遭遇する問題です。 s 修飾子、[sS]、および R を使用すると、正確なマッチングを実現できます。自分の習慣やニーズに基づいて、どの方法を使用するかを選択できます。正規表現を使用する場合、一般的に使用される正規表現演算関数とその使用方法について詳しくは、PHP PCRE 関数マニュアルを参照してください。
以上がPHP 正規表現の動作: 改行文字の一致の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。