クイックスタート
チュートリアル
ツールと言語
リファレンス
書籍レビュー
正規表現チュートリアル
はじめに
目次
特殊文字
印字不能文字
正規表現エンジンの内部
文字クラス
文字クラスの減算
文字クラスの積集合
短縮文字クラス
ドット
アンカー
単語境界
選択
オプション項目
繰り返し
グループ化とキャプチャ
後方参照
後方参照 パート2
名前付きグループ
相対後方参照
分岐リセットグループ
フリースペーシングとコメント
Unicode
モード修飾子
アトミックグループ
所有量指定子
先読みと後読み
先読みと後読み パート2
一致からテキストを除外する
条件式
バランスグループ
再帰
サブルーチン
無限再帰
再帰と量指定子
再帰とキャプチャ
再帰と後方参照
再帰とバックトラッキング
POSIXブラケット式
長さゼロの一致
継続一致
このサイトの詳細
はじめに
正規表現クイックスタート
正規表現チュートリアル
置換文字列チュートリアル
アプリケーションと言語
正規表現の例
正規表現リファレンス
置換文字列リファレンス
書籍レビュー
印刷可能なPDF
このサイトについて
RSSフィードとブログ
RegexBuddy—Better than a regular expression tutorial!

正規表現内でモードを指定する

通常、マッチングモードは正規表現の外側で指定されます。プログラミング言語では、正規表現コンストラクターにフラグとして渡すか、正規表現リテラルに追加します。アプリケーションでは、適切なボタンまたはチェックボックスを切り替えます。詳細は、このWebサイトのツールと言語セクションにあります。

ツールまたは言語がマッチングオプションを指定する機能を提供していない場合があります。便利なString.matches()メソッドは、Javaでは、Pattern.compile()のように、マッチングオプションのパラメーターを取りません。または、正規表現フレーバーが、外部フラグとして公開されていないマッチングモードをサポートしている場合があります。Rの正規表現関数は、ignore.caseを唯一のオプションとしていますが、基礎となるPCREライブラリには、このチュートリアルで説明されている他のどのライブラリよりも多くのマッチングモードがあります。

そのような場合は、正規表現の先頭に次のモード修飾子を追加できます。複数のモードを指定するには、(?ismx).

は、その組み合わせが有効な正規表現トークンでない場合、バックスラッシュで文字をエスケープするとエラーになります。PCREとそれを使用する言語でのみサポートされています。

正規表現の一部のみに対するモードのオンとオフの切り替え最新の正規表現フレーバーでは、正規表現の一部にのみ修飾子を適用できます。修飾子(?ism)を正規表現の途中に挿入すると、修飾子は修飾子の右側にある正規表現の部分にのみ適用されます。これらのフレーバーでは、モードの前にマイナス記号を付けることで、モードをオフにすることができます。マイナス記号の後のすべてのモードはオフになります。例えば、(?i-sm)

は、大文字と小文字の区別をオンにし、シングルラインモードとマルチラインモードの両方をオフにします。フレーバーが正規表現の一部にのみ修飾子を適用できない場合、正規表現の途中にある修飾子はエラーとして扱われます。Pythonはこれの例外です。Pythonでは、正規表現の途中に修飾子を配置すると、正規表現全体に影響します。そのため、Pythonでは、のみを改行として扱い、Unicode標準のすべての改行文字を認識しないようにします。改行で一致するかどうかは、(?i)caselesscaseless(?i)

はどちらも大文字と小文字が区別されません。他のすべてのフレーバーでは、末尾のモード修飾子は効果がないか、エラーになります。使用している正規表現フレーバーがモード修飾子をどのように処理するかをすばやくテストできます。正規表現(?i)te(?-i)stは、のみを改行として扱い、Unicode標準のすべての改行文字を認識しないようにします。改行で一致するかどうかは、testTEstと一致しますが、teSTまたは.

TEST

とは一致しません。 修飾子の範囲オプションをオンにする修飾子とオフにする修飾子を2つ使用する代わりに、修飾子の範囲を使用します。(?i)caseless(?-i)cased(?i)caselessは、(?i)caseless(?-i:cased)caselessと同じです。この構文は、キャプチャしないグループ

修飾子スパンは、正規表現の途中にモード修飾子を使用できるすべての正規表現フレーバー、そしてそれらのフレーバーによってのみサポートされています。これらには、JGsoft エンジン.NETJavaPerlPCREPHPDelphi、および R が含まれます。