この記事では主に正規表現の複数行モードと単一行モードのグラフィックとテキストの分析を紹介しますので、必要な方は参考にしてください
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 です
CRは記号「r」で表され、ASCIIコードは13です。 16 進数は 0x0D です。
LF は記号「n」で表され、ASCII コードは 10、16 進数は 0x0A です。
マッチング結果 Expresso と PHP では、複数行モードが有効な場合、「$」は文字列の末尾または「n」より前の位置と一致します。
単一行モード
単一行モードを有効にする: . 任意の文字に一致します (改行を含む) 単一行モードを閉じる: . 非改行のみに一致します
その他 任意の文字 (.つまり、n すべての文字に一致しない場合を除きます。)
複数行モードの一致には ^ または $、またはその両方が含まれている必要があります。 mを付けても意味がありません
シングルラインモードとマルチラインモードは8極に負けない概念です この2つのMSが相互に排他的であるのは、通常の開発の歴史的理由によるものです。単一行モードは小数点「.」の一致範囲に影響します
複数行パターンは「^」と「$」の一致範囲に影響します
以下の概念については、必要な接続はありません。グローバル マッチング、複数行モード、グリーディ モードの切り替え
グローバル モードは一部のスクリプト言語でのみ見られる概念です
一致する場合は、.NET の Match メソッドと同様にグローバル モードをオフにし、.NET と同様にグローバル モードをオンにします。 Matches メソッド 置換を実行する場合は、Java の replaceFirst と同様に、グローバル モードをオフにします、Java
の replaceAll と同様に、グローバル モードをオンにします (一致を実行するとき、PHP
関数
以上が複数行モードと単一行モードのグラフィック分析_正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。