クイック スタート
チュートリアル
ツール & 言語
リファレンス
書籍レビュー
正規表現リファレンス
はじめに
目次
クイックリファレンス
文字
基本機能
文字クラス
ショートハンド
アンカー
単語境界
量指定子
ユニコード
キャプチャグループと後方参照
名前付きグループと後方参照
特殊グループ
モード修飾子
再帰とバランスグループ
置換リファレンス
文字
マッチしたテキストと後方参照
コンテキストと大文字小文字変換
条件
このサイトの詳細
はじめに
正規表現クイックスタート
正規表現チュートリアル
置換文字列チュートリアル
アプリケーションと言語
正規表現の例
正規表現リファレンス
置換文字列リファレンス
書籍レビュー
印刷用PDF
このサイトについて
RSSフィードとブログ
RegexBuddy—Better than a regular expression reference!

正規表現リファレンス:モード修飾子

モード修飾子の構文は、正規表現のフレーバーによって異なる2つの要素で構成されています。括弧と疑問符は、修飾子を正規表現に追加するために使用されます。正規表現内の位置と正規表現のフレーバーに応じて、正規表現全体またはその一部に影響を与える可能性があります。フレーバーが少なくとも1つの修飾子構文をサポートしている場合、特定のモードを切り替えるために修飾子内で使用できる1つ以上の文字もサポートします。そうでない場合、そのフレーバーのすべての文字に対して「n/a」と示されます。

フレーバーがモード修飾子をサポートしているが、特定の文字をサポートしていない場合、「no」と表示されます。これは、フレーバーにこのモードがまったくないという意味ではありません。フレーバーには依然としてモードがある可能性がありますが、オフにするオプションはありません。モードは必ずしもデフォルトでオフになっているわけではありません。たとえば、ほとんどの正規表現フレーバーでは、^$は、デフォルトでは文字列の先頭と末尾でのみ一致します。しかし、Just Great SoftwareアプリケーションとRubyでは、デフォルトで各行の先頭と末尾に一致します。JGsoftアプリケーションでは、(?-m)を使用してこのモードをオフにできますが、Rubyではこのモードをまったくオフにできません。(?-m)は、Rubyではアンカーではなくドットに影響します。

以下の表は、各フレーバーが特定のモードを切り替えるための特定の文字をサポートしているかどうかのみを示しています。デフォルトは示していません。

機能構文説明JGsoft .NET Java Perl PCRE PCRE2 PHP Delphi R JavaScript VBScript XRegExp Python Ruby std::regex Boost Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE Oracle XML XPath
モード修飾子 (?letters)正規表現の先頭 正規表現の先頭にあるモード修飾子は、正規表現全体に影響を与え、正規表現の外で設定されたオプションを上書きします。 (?i)aに一致しますaA. YESYESYESYESYESYESYESYESYESnonoYESYESYESnoECMAYESnonononononono
モード修飾子 (?letters)正規表現の途中 正規表現の途中にあるモード修飾子は、正規表現全体に影響を与え、正規表現の外で設定されたオプションを上書きします。 te(?i)stに一致しますtest, teST, TEstTEST. nonononononononononononoYESnonononononononononono
モード修飾子 (?letters)正規表現の途中 正規表現の途中にあるモード修飾子は、修飾子の右側の正規表現の一部のみに影響します。修飾子がグループ内で使用されている場合、修飾子の右側のグループ内の正規表現の一部のみに影響します。正規表現またはグループが選択肢を使用している場合、修飾子の右側のすべての選択肢が影響を受けます。 te(?i)stに一致しますtestteSTただし、TEstまたはTEST. YESYESYESYESYESYESYESYESYESnonononoYESnoECMAnononononononono
修飾子グループ (?letters:regex) グループ内の正規表現の一部のみに影響する修飾子を持つ非キャプチャグループ。 te(?i:st)に一致しますtestteSTただし、TEstまたはTEST. YESYESYESYESYESYESYESYESYESnonono3.6YESnoECMAnononononononono
負の修飾子 (?on-off)(?on-off:regex) ハイフンの前の修飾子文字(もしあれば)はオンになり、ハイフンの後の修飾子文字はオフになります。 (?i)te(?-i)stに一致しますtestTEstただし、teSTまたはTEST. YESYESYESYESYESYESYESYESYESn/an/ano3.6YESn/aECMAnon/an/an/an/an/an/an/a
修飾子のリセット (?^) すべてのオプションをオフにします。キャレットの後に修飾子文字を続けて、一部のオプションを再びオンにできます。 (?i)te(?^)stに一致しますtestTEstただし、teSTまたはTEST. nonono5.14no10.327.3.0no4.0.0n/an/anononon/anonon/an/an/an/an/an/an/a
大文字と小文字を区別しない (?i) 大文字と小文字を区別しないようにします。 (?i)aに一致しますaA. YESYESYESYESYESYESYESYESYESn/an/aYESYESYESn/aECMAYESn/an/an/an/an/an/an/a
大文字と小文字を区別する (?c) 大文字と小文字を区別するようにします。 (?c)aに一致しますaただし、A. nononononononononon/an/anononon/anoYESn/an/an/an/an/an/an/a
自由間隔 (?x) 自由間隔モードをオンにして、正規表現トークン間の空白を無視し、#コメントを許可します。 (?x)a#bに一致しますa YESYESYESYESYESYESYESYESYESn/an/aYESYESYESn/aECMAYESn/an/an/an/an/an/an/a
自由間隔 (?xx) 自由間隔モードをオンにして、正規表現トークン間の空白を無視し、文字クラスの内外両方で#コメントを許可します。 (?xx)[ a]に一致しますaただし、  nonono5.26no10.307.3.0no4.0.0n/an/anononon/anonon/an/an/an/an/an/an/a
正確な間隔 (?t) 「タイト」または正確な間隔モードをオンにして、空白と#文字をリテラルとして扱います。 (?t)a#bに一致しますa#b nononononononononon/an/anononon/anoYESn/an/an/an/an/an/an/a
単一行 (?s) ドットを行区切り文字を含むすべての文字に一致させます。 (?s).*に一致しますab\n\ndefab\n\ndef YESYESYESYESYESYESYESYESYESn/an/aYESYESnon/aECMAnon/an/an/an/an/an/an/a
複数行 (?m) ^$各行の先頭と末尾に一致させます。 (?m)^.に一致しますadab\n\ndef YESYESYESYESYESYESYESYESYESn/an/aYESYESnon/aECMAnon/an/an/an/an/an/an/a
単一行 (?m) ドットを行区切り文字を含むすべての文字に一致させます。 (?m).*に一致しますab\n\ndefab\n\ndef nononononononononon/an/anonoYESn/anonon/an/an/an/an/an/an/a
Tcl単一行 (?s) ^$文字列の先頭と末尾でのみ一致します。ドットを行区切り文字を含むすべての文字に一致させます。 (?s)^.{3}のみ一致ab\nab\n\ndef nononononononononon/an/anononon/anoYESn/an/an/an/an/an/an/a
Tcl複数行 (?m) ^$各行の先頭と末尾に一致します。ドットと否定された文字クラスが改行文字に一致することを許可しません。 (?m)^.に一致しますadab\n\ndef nononononononononon/an/anononon/anoYESn/an/an/an/an/an/an/a
Tcl複数行 (?n) ^$各行の先頭と末尾に一致します。ドットと否定された文字クラスが改行文字に一致することを許可しません。 (?n)^.に一致しますadab\n\ndef nononononononononon/an/anononon/anoYESn/an/an/an/an/an/an/a
Tcl「部分的な」改行に依存する (?p) ^$文字列の先頭と末尾でのみ一致します。ドットと否定された文字クラスが改行文字に一致することを許可しません。 (?p)^.*のみ一致abab\n\ndef nononononononononon/an/anononon/anoYESn/an/an/an/an/an/an/a
Tcl「奇妙な」改行に依存する (?w) ^$各行の先頭と末尾に一致します。ドットを行区切り文字を含むすべての文字に一致させます。 (?w)^.に一致しますa、最初の\n、およびdab\n\ndef nononononononononon/an/anononon/anoYESn/an/an/an/an/an/an/a
明示的なキャプチャ (?n) 通常の括弧は、番号付きキャプチャグループではなく、非キャプチャグループです。名前付きキャプチャグループのみが実際にキャプチャします。 (?n)(a|b)cは同じです(?:a|b)c YESYESno5.22no10.307.3.0no4.0.0n/an/aYESnonon/anonon/an/an/an/an/an/an/a
重複する名前付きグループ (?J) 複数の名前付きキャプチャグループが同じ名前を共有できるようにします。 (?J)(?:(?'x'a)|(?'x'b))\k'x'に一致しますaaまたはbb nononono6.7YES5.2.0YESYESn/an/anononon/anonon/an/an/an/an/an/an/a
欲張らない量指定子 (?U) 欲張りな量指定子と怠惰な量指定子の構文を切り替えます。標準の量指定子構文の意味を混乱させるため、使用は強く推奨されません。 (?U)a*は怠惰で(?U)a*?は欲張り nonononoYESYESYESYESYESn/an/anononon/anonon/an/an/an/an/an/an/a
UNIX行 (?d) アンカーが行区切りで一致し、ドットが行区切りに一致しない場合、改行として改行文字のみを認識させます (?dm)^.に一致しますaca\rb\nc nonoYESnonononononon/an/anononon/anonon/an/an/an/an/an/an/a
BRE (?b) 正規表現をPOSIX BREとして解釈します (?b)a\+に一致しますaaa nononononononononon/an/anononon/anoYESn/an/an/an/an/an/an/a
ERE (?e) 正規表現をPOSIX EREとして解釈します (?e)[a\]+に一致しますa\a\a nononononononononon/an/anononon/anoYESn/an/an/an/an/an/an/a
リテラル (?q) 正規表現をリテラル文字列として解釈します(修飾子を除く) (?q)[a\]+に一致します[a\]+文字通り nononononononononon/an/anononon/anoYESn/an/an/an/an/an/an/a
追加の構文 (?X) バックスラッシュでエスケープされ、正規表現トークンを形成しない文字を、リテラルとしてではなくエラーとして扱います。 (?X)\qはエラーですが(?-X)\qに一致しますq nonononoYESno5.0.0–7.2.34YES2.14.0–3.6.3n/an/anononon/anonon/an/an/an/an/an/an/a
機能構文説明JGsoft .NET Java Perl PCRE PCRE2 PHP Delphi R JavaScript VBScript XRegExp Python Ruby std::regex Boost Tcl ARE POSIX BRE POSIX ERE GNU BRE GNU ERE Oracle XML XPath