1. ホーム
  2. ruby

[解決済み] 正規表現における `?i` と `?-i` はどのような意味ですか?

2022-03-04 21:56:15

質問

とは何か、どなたか説明してください。 (?i)(?-i) regexで単語を囲むとは?

(?i)test(?-i)

テストしてみると、マッチするのは test , TEST および teSt . でも、今まで見たことがありません。は何をするのでしょうか? ? 以前 i という意味ですか?私はこれを見た こちら .

解決方法は?

(?i) 大文字・小文字を区別しないモードを開始します。

(?-i) 大文字小文字を区別しないモードをオフにする

より詳しい情報は このページの「正規表現の一部分のみを対象としたモードのオンとオフ」セクションを参照してください。 :

<ブロッククオート

最近の正規表現では、修飾子を部分的に適用することができます。 正規表現 モディファイア(?ism)を正規表現の途中に挿入すると の部分のみに適用されます。 の右側にある。モードをオフにするには、その前に マイナス記号を使用します。マイナス記号の後のモードはすべてオフになります。例 (?i-sm) は大文字と小文字を区別せず、一行だけ表示します。 モードと複数行モードがあります。

すべての正規表現がこの機能をサポートしているわけではありません。JavaScript と Python はすべての モード修飾子は正規表現全体に適用されます。これらは という構文は、オプションをオフにすることが無意味であるためです。 モード修飾子は正規表現全体に適用されます。すべてのオプションは はデフォルトでオフになっています。

使用している正規表現がどのようにモードを処理するのか、すぐにテストすることができます。 修飾子です。正規表現 (?i)te(?-i)st は test と TEst にマッチしますが、(?-i)st にはマッチしません。 teSTまたはTEST。