2011-10-28 3 views

答えて

11

一般に、何も意味するものではなく、疑問符が有効な文字に従わない場合でもエラーが発生する可能性があります。しかし、それが効果を持つ特定の文字、すなわちこの文字がmodifierとしても使用されているかどうかがあります。

regular-expressions.infoは、この特定の構文についてこう述べています。

現代正規表現のフレーバーを使用すると、正規表現の一部にのみ修飾子を適用することができます。修飾子(?ism)を正規表現の途中に挿入すると、修飾子は修飾語の右側の正規表現の部分にのみ適用されます。モードの前にマイナス記号を付けてモードをオフにすることができます。マイナス記号の後のすべてのモードはオフになります。例えば。 (?i-sm)は大文字小文字の区別を無効にし、シングルラインモードとマルチラインモードの両方をオフにします。

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

使用している正規表現のフレーバーがモード修飾子をどのように処理するかを簡単にテストできます。正規表現(?i)te(?-i)sttestTEstと一致する必要がありますが、teSTまたはTESTは一致しません。

?iは、これらの文字に続くすべてが大文字小文字を区別しないことを意味することを意味します。

テキストにあるように、すべての正規表現フレーバがこの構文をサポートしているとは限りません。

+0

素晴らしい!とった。ところで、それは素晴らしいウェブサイトです –