通常の 4 つの一般的なマッチング モード

いわゆるマッチング モードとは、マッチング時に英語の大文字と小文字を区別しないなど、正規表現におけるメタキャラクターのマッチング動作を変更するいくつかの方法を指します。一般的なマッチング モードには、大文字と小文字を区別しないモード、ドット ワイルドカード モード、複数行モード、コメント モードの 4 つがあります。

1. 大文字と小文字を区別しないモード (Case-Insensitive)

正規表現全体の前にモード修飾子を置くと、正規表現全体で大文字と小文字が区別されないことになります。モード修飾子は (? モード識別子) で表されます。指定されたパターンを使用するには、対応する通常のパターンの前にパターン修飾子を置くだけです。大文字と小文字を区別しないモードでは、大文字と小文字を区別しない英語は Case-Insensitive であるため、対応するモード識別子は I の小文字 i であるため、大文字と小文字を区別しない cat は (?i)cat と書くことができます。

通常のマッチングを使用して、一部の部分では大文字と小文字を区別し、他の部分では大文字と小文字を区別しないようにする場合、どうすればよいでしょうか? たとえば、今欲しいのですが、cat の は大文字と小文字が区別されませんが、cat は大文字と小文字が区別されます。それは((?i)の)猫です。

  • 大文字と小文字を区別しないモードを指定するには、モード修飾子 (?i) を使用します。
  • 修飾子が括弧内にある場合、アクションの範囲は規則性全体ではなく、括弧内の規則性になります。
  • プログラミング言語を使用する場合、事前定義された定数を使用して一致パターンを指定できます。

2.ドットオールモード(ドットオール)

英語のドット (.) が改行を含む任意の文字と一致するように、規則的なパターンでパターンが提供されます。このモードはドット ワイルドカード モードであり、多くの場所で単一行マッチング モードと呼ばれています。

単一行の英語表現は Single Line で、単一行モードに対応する修飾子は (?s) です。

3. 複数行マッチングモード(Multiline)

通常、^ は文字列全体の先頭に一致し、$ は文字列全体の末尾に一致します。複数行マッチング モードで変更されるのは、^ と $ のマッチング動作です。

複数行モードの役割は、^ と $ を各行の先頭または末尾に一致させることです。モード修飾子 (?m) を使用してこのモードを指定できます。

このパターンの用途は何ですか? ログを処理するときに、ログが時刻で始まり、一部のログがスタック情報を出力し、複数の行を占める場合、複数行一致モードを使用して、ログ内の時刻で始まるログの各行を照合できます。

4. コメントモード(コメント)

多くの言語では、正規表現を読みやすく、保守しやすくするために、正規表現へのコメントの追加もサポートされています。これが正規表現のコメント モードです。正規表現におけるコメントモードは(?#comment)で表されます。

例えば、単語内で1回繰り返す正規表現 (\w+) \1 を次のように書くと、正規表現をよく知らない人でもコメントを通じて正規表現の意味を理解することができます。

(\w+)(?#word) \1(?#word repeat again)
  • 大文字と小文字を区別しないモード。正規表現全体または正規表現の一部の大文字と小文字を区別しない一致を許可します。
  • ドット ワイルドカード モードは単一行マッチングとも呼ばれ、改行を含む任意の文字と一致できるようにドットのマッチング動作を変更します。
  • 複数行の一致とは、^ と $ の一致動作を指し、各行の先頭または末尾を一致させることができます。
  • コメント モードでは、通常のルールにコメントを追加できるため、通常のルールが読みやすく、管理しやすくなります。

 この記事は8月のDay21の学習メモです 内容はGeek Timeの「正規表現入門」です お勧めの講座です。

おすすめ

転載: blog.csdn.net/key_3_feng/article/details/132418277