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

オプション項目

クエスチョンマークは、正規表現内の先行トークンをオプションにします。colou?rは両方ともマッチしますcolourcolor。クエスチョンマークは量子化子と呼ばれます。

括弧を使用して複数のトークンをグループ化し、閉じ括弧の後にクエスチョンマークを配置することで、複数のトークンをオプションにすることができます。例:Nov(ember)?はマッチしますNovNovember.

複数のクエスチョンマークを含めることで、多くの選択肢にマッチする正規表現を作成できます。Feb(ruary)? 23(rd)?はマッチしますFebruary 23rd, February 23, Feb 23rdFeb 23.

中括弧を使用して、何かをオプションにすることもできます。colou{0,1}rはと同じですcolou?rPOSIX BREGNU BREはどちらの構文もサポートしていません。これらのフレーバーでは、バックスラッシュを使用して中括弧に特別な意味を与える必要があります。colou\{0,1\}r.

重要な正規表現の概念:貪欲性

クエスチョンマークはこのチュートリアルで紹介する最初のメタ文字であり、貪欲です。クエスチョンマークは正規表現エンジンに2つの選択肢を与えます。クエスチョンマークが適用される部分をマッチしようとするか、マッチしようとしないかのどちらかです。エンジンは常にその部分をマッチしようとします。このことで正規表現全体が失敗した場合のみ、エンジンはクエスチョンマークが適用される部分を無視しようとします。

その効果は、正規表現Feb 23(rd)?を文字列Today is Feb 23rd, 2003に適用すると、マッチは常にFeb 23rdではなくFeb 23になります。最初のクエスチョンマークの後に2番目のクエスチョンマークを置くことで、クエスチョンマークを非貪欲にする(つまり、貪欲性をオフにする)ことができます。

他の繰り返し演算子に関する説明では、貪欲な量子化子と非貪欲な量子化子について詳しく説明しています。

正規表現エンジンの内部を覗く

正規表現colou?rを文字列The colonel likes the color green.

を適用してみましょう。正規表現の最初のトークンはリテラルcです。それが正常にマッチする最初の位置は、cincolonelのcです。エンジンは続行し、oはマッチしますo, lはマッチしますlともう一つのoはマッチしますoを見つけます。次にエンジンは、uはマッチしますがマッチするかどうかを確認します。これは失敗します。しかし、クエスチョンマークは、uにマッチしないことが許容されることを正規表現エンジンに伝えます。そのため、エンジンは次の正規表現トークンrに進みます。しかし、これもがマッチするかどうかを確認します。にはマッチしません。これで、エンジンは正規表現全体がcincolonelから始まるマッチに失敗すると結論付けるしかありません。そのため、エンジンは再びcを、の最初のoにマッチさせようとします。colonel.

一連の失敗の後、ccincolorにマッチし、o, loはそれに続く文字にマッチします。これで、エンジンはuはマッチしますrがマッチするかどうかを確認します。これも失敗します。繰り返しますが、問題ありません。クエスチョンマークにより、エンジンはrを続行できます。これはrにマッチし、エンジンは正規表現が文字列内でcolorに正常にマッチしたと報告します。