誰かが正規表現で単語(?i)
を(?-i)
ラップすることの意味を説明できますか?
(?i)test(?-i)
テストしたところ、、、、に一致test
しTEST
ますteSt
。しかし、私はこれを前に見たことがありません。?
前はどういうi
意味ですか?私はここでこれを見ました。
(?i)
大文字と小文字を区別しないモードを開始します
(?-i)
大文字と小文字を区別しないモードをオフにします
このページの「正規表現の一部のみのモードのオンとオフの切り替え」セクションの詳細:
最新の正規表現では、正規表現の一部にのみ修飾子を適用できます。正規表現の中央に修飾子(?ism)を挿入すると、修飾子は正規表現の修飾子の右側の部分にのみ適用されます。モードの前にマイナス記号を付けると、モードをオフにできます。マイナス記号以降のすべてのモードがオフになります。たとえば、(?i-sm)は大文字と小文字を区別しないようにし、単一行モードと複数行モードの両方をオフにします。
すべての正規表現フレーバーがこれをサポートしているわけではありません。JavaScriptとPythonは、すべてのモード修飾子を正規表現全体に適用します。モード修飾子が正規表現全体に適用される場合、オプションをオフにしても意味がないため、これらは(?-ismx)構文をサポートしていません。デフォルトでは、すべてのオプションがオフになっています。
使用している正規表現フレーバーがモード修飾子をどのように処理するかをすばやくテストできます。正規表現(?i)te(?-i)stは、testおよびTEstと一致する必要がありますが、teSTまたはTESTとは一致しません。
(?i)
大文字と小文字を区別しないモードをオンに(?-i)
し、オフにします。
たとえば、を試した場合、 test、TEst、tEst(?i)te(?-i)st
と一致しますが、 teSTとは一致しません。
rubydocsから直接取得。
正規表現の終了区切り文字の後に、パターンの一致方法を制御する1つ以上の1文字のオプションを続けることができます。
/ pat/i-大文字と小文字を区別しない
/ pat/m-改行を。と一致する文字として扱います。
/ pat/x-パターン内の空白とコメントを無視します
/ pat / o->#{}補間を1回だけ実行します
i、m、およびxは、(?on-off)構文を使用して部分式レベルに適用することもできます。これにより、オプションをオンにし、括弧で囲まれた式のオプションをオフにします。