ホームページ  >  記事  >  ウェブフロントエンド  >  複数行モードと単一行モードのグラフィック分析_正規表現

複数行モードと単一行モードのグラフィック分析_正規表現

微波
微波オリジナル
2017-06-28 13:38:181277ブラウズ

この記事では主に正規表現の複数行モードと単一行モードのグラフィックとテキストの分析を紹介しますので、必要な方は参考にしてください

Expressoで「複数行モード」をテストします

テスト1。

注: ここのサンプル テキストでは 3eeeee の後に改行はなく、カーソルは e の直後にあります。上の検索結果領域に示されているように、一致結果は 3eeeee です。

ここで 1abcde と 2abc が一致しないのはなぜですか?

複数行モードを有効にする

^ 文字列の先頭(文字列の開始位置)と一致することも、行の先頭(つまり、改行文字の後の位置)と一致することもできますn)
$ 文字列の末尾 (文字列の終了位置) と一致することもできますが、行の末尾 (つまり、改行文字 n より前の位置) と一致することもできます

マルチをオフにします行モード

^ 文字列の先頭のみに一致します
$ 文字列の末尾のみに一致します

知識ポイント: r は復帰文字、n は改行文字です。 Windows では、通常ライン フィードと呼ばれるものは、基本的に最初にキャリッジ リターン、次にライン フィードと呼ばれます。詳細については、以下で説明します。

上の図に示すように: r は [CR] に一致、n は [LF] に一致 <—— CR はキャリッジリターン、LF はラインフィード
ab
cd
e
などの複数の段落の文字列Windows で操作する システムでは、実際には ab[CR][LF]cd[CR][LF]e です

Windows では、テキスト内のキャリッジ リターンとライン フィードは 0D 0A として保存されます。つまり、最初に格納されるのは「キャリッジリターンr」、次に「ラインフィードn」が格納されます。

CRは記号「r」で表され、ASCIIコードは13です。 16 進数は 0x0D です。
LF は記号「n」で表され、ASCII コードは 10、16 進数は 0x0A です。

正規表現: (?m)^(dw+)(s*)$

サンプルテキスト

マッチング結果

Expresso と PHP では、複数行モードが有効な場合、「$」は文字列の末尾または「n」より前の位置と一致します。

単一行モード

単一行モードを有効にする: . 任意の文字に一致します (改行を含む)

単一行モードを閉じる: . 非改行のみに一致します
その他 任意の文字 (.つまり、n すべての文字に一致しない場合を除きます。)

複数行モードは ^ と $ の一致に影響します。


複数行モードの一致には ^ または $、またはその両方が含まれている必要があります。 mを付けても意味がありません

シングルラインモードとマルチラインモードは8極に負けない概念です この2つのMSが相互に排他的であるのは、通常の開発の歴史的理由によるものです。単一行モードは小数点「.」の一致範囲に影響します

複数行パターンは「^」と「$」の一致範囲に影響します


以下の概念については、必要な接続はありません。グローバル マッチング、複数行モード、グリーディ モードの切り替え

グローバル マッチングはオフになり、最初に成功したマッチングのみがマッチングされます。グローバル マッチングはオンになり、成功したすべてのマッチングがマッチングされます

グローバル モードは一部のスクリプト言語でのみ見られる概念です

一致する場合は、.NET の Match メソッドと同様にグローバル モードをオフにし、.NET と同様にグローバル モードをオンにします。 Matches メソッド

置換を実行する場合は、Java の replaceFirst と同様に、グローバル モードをオフにします、Java

の replaceAll と同様に、グローバル モードをオンにします (一致を実行するとき、PHP
関数

の preg_ match と同様に、グローバル モードをオフにします。; の preg_ match_all 関数と同様に、グローバル モードをオンにします) PHP)

以上が複数行モードと単一行モードのグラフィック分析_正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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